Поддержка запросов CTE Sql в Entity Framework <DefiningQuery> - PullRequest
2 голосов
/ 05 января 2011

Может ли структура сущностей поддерживать запросы SQL, которые используют CTE / номера строк в атрибуте

<DefiningQuery> </DefiningQuery>

файла .edmx?

Это относится к запросу, данному мне вэтот пост, который использует такие функции: Сложный / Алгоритмический SQL-запрос

Я получаю следующее InnerException от sql:

Incorrect syntax near the keyword 'with'.
Incorrect syntax near the keyword 'with'. If this statement is a common table ex
pression, an xmlnamespaces clause or a change tracking context clause, the previ
ous statement must be terminated with a semicolon.
Incorrect syntax near ','.
Incorrect syntax near ','.
Incorrect syntax near ')'.

Добавление точки с запятой перед открытиемоператор with не решает проблему.Там написано неверный синтаксис рядом с ';'в таком случае.

Если не поддерживается, думаю, я мог бы связать хранимую процедуру со сложной сущностью, но есть ли другие варианты?

Спасибо.

1 Ответ

0 голосов
/ 06 июня 2011

В этом сообщении не указывается, является ли CTE рекурсивным или нерекурсивным или нет. Могут быть веские причины производительности для использования рекурсивного CTE, который может перевесить желание абстрагировать базу данных (т.е. использовать EF в качестве ORM).

В Entity Framework 4 есть обходные пути, которые Мартин упоминал выше при использовании представления. Это сообщение в блоге от Matthieu Mezil (http://msmvps.com/blogs/matthieu/archive/2010/06/16/how-to-include-recursion-table-valued-functions-in-linq-to-entities-queries-with-ef4.aspx)) есть некоторые подробности о том, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...