Mehrere Versionen von SQL Server unter Verwendung von Entity Framework in einer einzigen Anwendung von ASP.NET
-
21-08-2019 - |
Frage
Ich bin mit dem Entity Framework in einer Web-Anwendung, die SQL Server 2000 verwendet, 2005 und 2008. Wenn ich eine neue EDMX-Datei anders als 2008 mit etwas erstellen (Version des ersten edmx erstellt) Ich erhalte error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier.
Es scheint, dass irgendwo im Code wird die Verbindung zu einem 2008-Datenspeicher angeschlossen und, wenn es die SSDL Datei überprüft und sieht einen anderen ProviderManifestToken Wert wirft es diesen Fehler. Ich bin ein wenig mehr als frustriert. Es ist schwer vorstellbar, dass EF nur mit einer einzigen Version von SQL Server pro Anwendung arbeiten. Ich bin ziemlich sicher, es muss eine Einstellung oder Problemumgehung sein. Hat jemand eine Lösung für verschiedene Versionen von SQL Server und dem Entity Framework in einer einzigen Web-Anwendung verwenden?
Lösung
Ich war in der Lage, dies zu erreichen, indem jeden edmx
in einer separaten Assembly setzen. Dann in der Verbindungszeichenfolge ersetzt all res://*/...
mit res://NameOfAssembly/...
Ich kann sogar Verbindungen zwischen den beiden Unternehmen Modellen durchführt (im Gegensatz zu Forderungen fand ich in anderen Quellen), z.
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
};
Andere Tipps
Dieser Link hat mir geholfen, das Problem zu lösen, wenn ein Unterschied in SQL Server 2005 und 2008 gibt es. http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-provider-the- providermanifesttoken-2008-is-andere-von-2005-das-was-angetroffen früheren /
Direkt an der .edmx Datei und wählen Sie Öffnen mit XML-Editor. Öffnen Sie Entity Framework .edmx-Datei:
Ändern Sie den ProviderManifestToken bis 2008:
Sieht aus wie es ist ein bekanntes Problem für Microsoft.