Вопрос по entity-framework – Несколько версий SQL Server с использованием Entity Framework в одном приложении ASP.NET

11

Я использую 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. Кажется, что где-то в коде соединение подключено к хранилищу данных 2008 года, и когда он проверяет файл SSDL и видит другое значение ProviderManifestToken, он выдает эту ошибку. Я немного более чем разочарован. Трудно представить, что EF будет работать только с одной версией Sql Server на приложение. Я вполне уверен, что должен быть параметр или обходной путь. У кого-нибудь есть решение использовать разные версии SQL-сервера и Entity Framework в одном веб-приложении?

Следует упомянуть, что я нахожусь в процессе перехода с SQL 2000 на SQL 2008, изменил строки подключения и выполнил «Обновление модели из базы данных». как ни странно, если я изменю все SSDL, чтобы использовать ProviderManifestToken = & quot; 2005 & quot; приложение работает. Ian B
Я тоже ищу ответ на эту проблему. Единственные релевантные результаты поиска в Google, которые я обнаружил до сих пор, не доходят до какой-либо глубины. Cogwheel

Ваш Ответ

2   ответа
24

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

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

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 
              };
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Ian B
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
5

Эта ссылка помогла мне решить проблему, когда были различия в 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- встречается, ранее /

Щелкните правой кнопкой мыши файл .edmx и выберите «Открыть в редакторе XML». Откройте файл Entity Framework .edmx:

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

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

Error: User Rate Limit Exceeded Ian B
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы