Я пытаюсь использовать запрос Dynamic LINQ Query для запроса базы данных SQL, а в предложении Where мне нужно оценить условие '=' с полем типа TEXT.Динамический LINQ API - функция преобразования SQL
Прямо сейчас, у меня есть это:
var result = DBCon.PcInValue
.Where(String.Format("InputName = @0 and InputValue) {0} @1", f.Condition), f.Field, f.Value)
.Select("new(OrderNum, OrderLine)");
Это не работает, так как вы не можете использовать оператор, равный по типу TEXT данных. Поле типа TEXT - «InputValue». Я попытался преобразовать его так:
var result = DBCon.PcInValue
.Where(String.Format("InputName = @0 and Convert(nvarchar(100), InputValue) {0} @1", f.Condition), f.Field, f.Value)
.Select("new(OrderNum, OrderLine)");
Но похоже, что это не поддерживается.
У кого-нибудь есть подсказки относительно того, как я могу это сделать?
EDIT: Следующий SQL Синтаксис работает без проблем, но я опять не уверен, если это возможно с помощью Dynamic LINQ API:
SELECT [t0].[OrderNum], [t0].[OrderLine]
FROM [PcInValue] AS [t0]
WHERE ([t0].[InputName] = 'OpenWidthFt') AND (Convert(nvarchar(100), [t0].[InputValue]) = '10')
Это не работает. Итоговый запрос такой же, как и раньше: SELECT [t0]. [OrderNum], [t0]. [OrderLine] FROM [PcInValue] AS [t0] WHERE ([t0]. [InputName] = 'OpenWidthFt') AND ([t0]. [InputValue] = '10') – Overhed
Нечетный. Просто чтобы убедиться, что, когда вы игнорируете '.ToString()', какое сообщение об ошибке вы получаете? Я получаю «SQL Server не обрабатывает сравнение типов файлов NText, Text, Xml или Image». Это происходит при ударе экземпляра SQL Server 2005 (Express). –
Получается аналогичное сообщение об ошибке, указывающее, что NVarChar to Text не сопоставим с оператором equals. – Overhed