Динамический выпуск LINQ Cast
Когда я пытаюсь выполнить этот ESQL (приведение int к строке) с динамическим linq (по этой ссылке)
queryable.Where("CAST(PositionID AS Edm.String).Contains(@0)", paramsObj); //PositionID is Int32
это исключение
')' or ',' expected
Моя версия Entity Framework 4.0. Есть идеи, как решить эту проблему?
Заранее спасибо,
Брайан
1 ответ
Ты не можешь использовать as
внутри вызова функции попробуйте изменить свой код следующим образом
queryable.Where("(PositionID.ToString().Contains(@0))", paramsObj); //PositionID is Int32
ОБНОВИТЬ:
Скорее всего в вашем случае придется использовать пользовательские функции из БД
ОБНОВЛЕНИЕ 2:
я думаю, что вы не можете использовать esql с Dynamic LINQ, потому что он анализирует строковые условия по собственным правилам, поэтому синтаксис edsl может быть неправильным для Dynamic LINQ, также не все конструкции SQL реализуются в LINQ to Entities, поэтому, если вы хотите использовать like operator
ты должен использовать Contains, StartsWith, EndsWith
функции, которые работают только со строкой
Так что для решения этой проблемы вы можете использовать процедуры и функции хранения, или команду eSQL, или raw sql