Исключение LinqPad SQL Compact Edition

Я получаю исключение при выполнении следующего запроса Linq в LinqPad.

Я использую Db - это SQLCE (компактная версия)

SQLCeException: указанное значение аргумента для функции недопустимо. [Аргумент № = 1, Название функции (если известно) = LEN]

from m in Menus 
where m.CategoryName.Length > 2
select m

or

Menus.Where (m => m.CategoryName.Length>5)

Может ли кто-нибудь пролить свет на то, что здесь происходит?

Это таблица http://i49.tinypic.com/11hs5ub.png


person ojhawkins    schedule 17.03.2013    source источник
comment
Проверьте, является ли какое-либо из значений нулевым.   -  person Vitthal    schedule 17.03.2013
comment
[IMG] i49.tinypic.com/11hs5ub.png[/IMG]   -  person ojhawkins    schedule 17.03.2013
comment
В таблице нет нулевых значений   -  person ojhawkins    schedule 17.03.2013
comment
Ага, я только что это видел ... Вы хотите проверить длину данных, скажем, Electronics имеет длину 11, верно?   -  person Vitthal    schedule 17.03.2013
comment
Я просто хочу сделать базовый выбор объектов с длиной строки больше 5   -  person ojhawkins    schedule 17.03.2013
comment
Можете ли вы показать нам, какой SQL генерируется - LINQPad вам расскажет.   -  person Phil    schedule 17.03.2013
comment
SELECT [t0].[CategoryId], [t0].[CategoryName] FROM [Menu] AS [t0] WHERE (CONVERT(Int,LEN(CONVERT(NText,[t0].[CategoryName])))) > @p0 -- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [5] -- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: 4.0.30319.17929 @Phil   -  person ojhawkins    schedule 18.03.2013
comment
Тот же код работает в моем проекте MVC   -  person ojhawkins    schedule 18.03.2013
comment
Я не думаю, что LEN работает с NText, какой тип, если CategoryName?   -  person Phil    schedule 18.03.2013
comment
CategoryName - это nvarchar. @Фил   -  person ojhawkins    schedule 18.03.2013


Ответы (1)


Я не могу дать вам решения, но проблема возникает из-за того, что функция LEN не принимает аргумент типа NTEXT. Ваша версия Linq-to-sql генерирует неверный SQL. Есть ли более поздняя версия Linq to SQL и / или SQL CE, которую вы можете использовать?

В качестве альтернативы вы можете использовать Entity Framework?

person Phil    schedule 18.03.2013