My 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. Но он возвращает исключение ArgumentNullException при выполнении linq.
На самом деле столбец с проверкой "VilleArrive" ("city") никогда не бывает нулевым, а всегда пустой строкой
Я действительно не понимаю, почему это добавляется.
Моя проблема выглядит так: LINQ to SQL и строки Null, как мне использовать Contains?
но ответы не работают со мной.
Кажется, что ключевое слово "LIKE" вызывает Linq.SqlClient.SqlHelpers.GetStringContainsPattern (текст строки, экранирование символа)
Спасибо за вашу помощь, извините за мой английский.
Здесь трассировка стека моего проекта является проектом ASP MVC 1.0
System.ArgumentNullException был
необработанный пользовательским кодом Message = "La
valeur ne peut pas être null. \ n \ Nom
du paramètre: текст "
Источник = "System.Data.Linq"
ParamName = "text" StackTrace:
à System.Data.Linq.SqlClient.SqlHelpers.GetStringContainsPattern (String
текст, Чар побег)
à System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.TranslateStringMethod (SqlMethodCall
тс)
à System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitMethodCall (SqlMethodCall
тс)
à System.Data.Linq.SqlClient.SqlVisitor.Visit (SqlNode
узел)
à System.Data.Linq.SqlClient.SqlVisitor.VisitExpression (SqlExpression
ехр)
à System.Data.Linq.SqlClient.SqlVisitor.VisitBinaryOperator (SqlBinary
BO)
à System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitBinaryOperator (SqlBinary
BO)
à System.Data.Linq.SqlClient.SqlVisitor.Visit (SqlNode
узел)
à System.Data.Linq.SqlClient.SqlVisitor.VisitExpression (SqlExpression
ехр)
à 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
су)
à 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.SqlProvider.BuildQuery (ResultShape
resultShape, Тип resultType, SqlNode
узел, ReadOnlyCollection 1
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 (Boolean
UpdateAlerts) данс
D: \ AspProject \ covCake \ covCake \ Services \ ProjetAlerts.cs: Ligne
111
à covCake.Controllers.AlertesController.SendAlertEmail (String
п) данс
D: \ AspProject \ covCake \ covCake \ Контроллеры \ AlertesController.cs: Ligne
152
lambda_method (ExecutionScope, ControllerBase, Object [])
à System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase
контроллер, параметры Object [])
à 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: