Я пытаюсь запустить это выражение LINQ через Entity Framework Core 3.1.1.
using (Text3Context text3Context = new Text3Context(_constringText3))
{
var aus = text3Context.Ausschreibungen.Where(a => a.InhaltKurzText.Contains(value)).Select(c => c.InhaltKurzText).ToList();
}
К сожалению, оно вызывает исключение: «Однако типы данных text и varchar несовместимы в операторе равенства оператор» , когда я запускаю одно и то же выражение в LINQPad 6:
string value = "test";
var aus = Ausschreibungen.Where(a => a.InhaltKurzText.Contains(value)).Select(c => c.InhaltKurzText);
aus.Dump();
, оно отлично работает без ошибок.
sql -запросы немного отличаются, как вы можете видеть:
Linq / EF Core:
SELECT [a].[InhaltKurzText]
FROM [dbo].[Ausschreibungen] AS [a]
WHERE (@__value_0 = '''') OR (CHARINDEX(@__value_0, [a].[InhaltKurzText]) > 0)',N'@__value_0 text',@__value_0='test'
LINQPad:
SELECT [a].[InhaltKurzText]
FROM [Ausschreibungen] AS [a]
WHERE ((@__value_0 = N'''') AND @__value_0 IS NOT NULL) OR (CHARINDEX(@__value_0, [a].[InhaltKurzText]) > 0)',N'@__value_0 nvarchar(16)',@__value_0=N'test'
Как я могу обработать этот запрос так же, как LINQPad?
Тип данных "10h *" для "InhaltKurzText" - это "текст", что, однако, является причиной исключения, так как изменение типа sql, к сожалению, не вариант, а обходные пути "дороги" «Я хотел бы иметь возможность запускать его так же, как это делает LINQPad.
Версия зависимости Microsoft.Data. Sql .Client: 1.0.19.269.1.
Заранее спасибо