我的LINQ to SQL查询string.Contains与LINQ to SQL中返回一个空例外
PROJETS = PROJETS.Where(p => (p.VilleArrive != "" && p.VilleArrive != null) && p.VilleArrive.Contains(alerte.VilleArrive));
被翻译这样
SELECT * // (many columns)
FROM [dbo].[cov_Projet] AS [t0]
WHERE ([t0].[VilleArrive] <> @p0) // city != ""
AND ([t0].[VilleArrive] IS NOT NULL) // city != null
AND ([t0].[VilleArrive] LIKE @p1) // city.contains(alert.city)
ORDER BY [t0].[DateDebut]
当我手动运行到SQL Server这是很好的执行。但是它在由linq执行时会返回一个ArgumentNullException异常。 实际上,测试“VilleArrive”(“城市”)的列不会为空,但总是一个空字符串
我真的不明白它为什么附加。 我的问题看起来像这个LINQ to SQL and Null strings, how do I use Contains? 但答案不适用于我。
“喜欢”关键字似乎调用Linq.SqlClient.SqlHelpers.GetStringContainsPattern(字符串文字,字符转义)
谢谢您的帮助,对不起我的英语。
这里堆栈跟踪我的项目是一个ASP MVC 1.0项目
System.ArgumentNullException是 由用户代码消息=“拉 valeur NE peut PAS理由空。\ r \ nNom 杜paramètre未处理:文本”
源= “将System.Data.Linq”
PARAMNAME = “文本” 堆栈跟踪: àSystem.Data.Linq.SqlClient.SqlHelpers.GetStringContainsPattern(字符串 文本,字符逃逸) àSystem.Data。 Linq.SqlClient.PostBindDotNetCon verter.Visitor.TranslateStringMethod(SqlMethodCall MC) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitMethodCall(SqlMethodCall MC) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) à System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression EXP) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitBinaryOperator(SqlBinary BO) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitBinaryOperator( SqlBinary bo) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) àSystem.Data.Lin q.SqlClient.SqlVisitor.VisitExpression(SqlExpression EXP) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(一个SQLSelect 选择) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(一个SQLSelect 选择) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias 一个) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit( SqlNode 节点) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore (一个SQLSelect 选择) àSystem.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(一个SQLSelect 选择) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) à将System.Data.Linq .SqlClient。SqlVisitor.VisitUnion(SqlUnion SU) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias 一个) àSystem.Data。 Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource 源) àSystem.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(一个SQLSelect 选择) à System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select) àSystem.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode 节点) àSystem.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape,类型与resultType,SqlNode 节点,ReadOnlyCollection1 parentParameters, SqlNodeAnnotations annotations) à System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations) à System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.GetQueryText(Expression query) à System.Data.Linq.DataQuery
1.ToString() àcovCake.Services.ProjetAlerts.RetrieveProjectsByUsers(布尔 UpdateAlerts)丹斯 d:\ AspProject \ covCake \ covCake \服务\ ProjetAlerts.cs:LIGNE àcovCake.Controllers.AlertesController.SendAlertEmail(字符串 p)丹斯 d:\ AspProject \ covCake \ covCake \控制器\ AlertesController.cs: ligne àlambda_method(ExecutionScope,ControllerBase,Object []) àSystem.Web.Mvc.ActionMethodDispatc her.Execute(ControllerBase 控制器,对象[]参数) àSystem.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary的2 parameters) à System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2个 参数) àSystem.Web.Mvc.ControllerActionInvoker。 <> c__DisplayClassa.b__7() àSystem.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter 滤波器,ActionExecutingContext preContext,Func`1续)
的InnerException: