Особенности вложенного запроса в Linq to SQL - PullRequest
3 голосов
/ 06 апреля 2011

Итак, я ранее опубликовал вопрос о левом соединении результата запроса, в котором group by используется с другой таблицей, и это приводит к крайне неэффективному Outer Apply, вложенному в Cross Apply sql. Я не получил ничего полезного от ответов (хотя я ценю усилия), поэтому я решил провести еще какое-то исследование.

при перекрестном применении и внешнем применении:

Операторы перекрестного и внешнего применения

Эти операторы недоступны в SQL Server 2000. LINQ to SQL пытается серия переписывает, чтобы заменить их с соответствующими соединениями.

Перекрестное применение и внешнее применение создан для отношений Navigations. Набор запросов для какие такие переписывания возможны не очень хорошо определено. По этой причине минимальный набор запросов, который поддерживается для SQL Server 2000 является набор, который не предполагает отношения навигация.

Я не буду спрашивать, почему они думают, что это хорошая идея, но я хотел бы знать, есть ли способ заставить linq to sql перейти в режим 2000. Казалось бы, это решило мою проблему.

1 Ответ

1 голос
/ 06 апреля 2011

У меня есть простой подход ... если вам нужно набросить запрос LINQ, чтобы заставить его играть хорошо, то: не играйте в эту игру.

Поскольку в вашем распоряжении ExecuteQuery<T>, я бы просто написал TSQL напрямую, чтобы я мог измерять, прогнозировать и оптимизировать - и использовать LINQ-to-SQL (или dapper.net * 1005). *) чтобы поднять результат в базовый объект.

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