Несколько версий SQL Server с использованием Entity Framework в одном приложении ASP.NET - PullRequest
11 голосов
/ 30 июня 2009

Я использую Entity Framework в веб-приложении, использующем SQL Server 2000, 2005 и 2008. Когда я создаю новый файл EDMX, использующий что-либо, кроме 2008 (версия первого созданного edmx), я получаю error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier. It Кажется, что где-то в коде соединение подключено к хранилищу данных 2008 года, и когда он проверяет файл SSDL и видит другое значение ProviderManifestToken, он выдает эту ошибку. Я немного более чем разочарован. Трудно представить, что EF будет работать только с одной версией Sql Server на приложение. Я вполне уверен, что должен быть параметр или обходной путь. У кого-нибудь есть решение использовать разные версии SQL-сервера и Entity Framework в одном веб-приложении?

Ответы [ 2 ]

24 голосов
/ 16 октября 2009

Я смог сделать это, поместив каждый edmx в отдельную сборку. Затем в строке подключения замените все res://*/... на res://NameOfAssembly/...

Я даже могу выполнять соединения между двумя моделями сущностей (вопреки утверждениям, найденным в других источниках), например ::1006

var oneDb = new Entities2000();
var otherDb = new Entities2005();

var results = from one in oneDb.SomeSet
              join other in otherDb.OtherSet
                  on one.Property equals other.Property
              select new { 
                  SomeProp = one.SomeProp,
                  OtherProp = other.OtherProp 
              };
5 голосов
/ 28 января 2011

Эта ссылка помогла мне решить проблему, когда были различия в SQL Server 2005 и 2008. http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-provider-the-providermanifesttoken-2008-is-different-from-2005-that-was-encountered-earlier/

Щелкните правой кнопкой мыши файл .edmx и выберите Открыть с помощью XML Editor. Откройте файл .edmx платформы Entity Framework:

Измените ProviderManifestToken на 2008:

Похоже, это известная проблема для Microsoft.

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