Entity Framework с SQL Server 2000 (оператор APPLY) проблема - PullRequest
1 голос
/ 18 ноября 2009

У меня есть простой запрос Linq ниже:

var seq = (from n in GetObjects() 
          select n.SomeKey)
          .Distinct()
          .Count();

Этот запрос работает с SQL Server 2005 и выше.

Но это начало вызывать головную боль, когда я подключил EF к SQL Server 2000. Поскольку EF использует оператор APPLY, который может поддерживать только SQL Server 2005 и выше. Я не знаю, почему, черт возьми, EF использует оператор APPLy вместо подзапросов.

Моя текущая работа вокруг:

var seq = (from n in GetObjects() 
              select n.SomeKey)
              .Distinct()
              .ToList()
              .Count();

Но я могу предвидеть больше проблем. Приведенный выше запрос является простым.

Кто-нибудь сталкивался с такой проблемой? И как вы, ребята, работаете над этим? Или есть способ заставить EF не использовать оператор APPLY?

Любая помощь будет очень ценится.

Как Лун.

1 Ответ

1 голос
/ 18 ноября 2009

Проблема в том, что вы сгенерировали свою модель для базы данных 2005 года (или выше). Таким образом, дизайнер GUI поместил значение ProviderManifestToken 2005 или 2008 в EDMX. Это заставляет поставщика SQL Server генерировать SQL, оптимизированный для этих версий. Чтобы это исправить:

  1. Щелкните правой кнопкой мыши по файлу EDMX.
  2. Открыть в редакторе XML.
  3. Поиск ProviderManifestToken
  4. Изменить на 2000
  5. Сохраните и запустите.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...