Динамический выпуск 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

Другие вопросы по тегам