Mehrere Versionen von SQL Server, die Entity Framework in einer einzelnen ASP.NET-Anwendung verwenden

entity entity-framework sql-server-2000 sql-server-2005

Frage

Ich verwende das Entity Framework in einer Webanwendung, die SQL Server 2000, 2005 und 2008 verwendet. Wenn ich eine neue EDMX-Datei mit etwas anderem als 2008 (Version des ersten erstellten Edmx) erstellt habe, erhalte ich den error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier. Es scheint, dass die Verbindung irgendwo im Code mit einem 2008-Datastore verbunden ist. Wenn sie die SSDL-Datei überprüft und einen anderen ProviderManifestToken-Wert sieht, wird dieser Fehler ausgelöst. Ich bin ein bisschen mehr als frustriert. Es ist schwer vorstellbar, dass EF nur mit einer einzigen Version von SQL Server pro Anwendung arbeitet. Ich bin mir ziemlich sicher, dass es eine Einstellung oder einen Workaround geben muss. Hat jemand eine Lösung, um verschiedene Versionen von SQL Server und Entity Framework in einer einzigen Webanwendung zu verwenden?

Akzeptierte Antwort

Ich konnte dies erreichen, indem ich jeden edmx in einer separaten Assembly zusammenstellte. Ersetzen Sie dann in der Verbindungszeichenfolge alle res://*/... durch res://NameOfAssembly/...

Ich kann sogar Verknüpfungen zwischen den beiden Entitätsmodellen ausführen (entgegen den Behauptungen, die ich in anderen Quellen gefunden habe), 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 
              };

Beliebte Antwort

Dieser Link hat mir geholfen , das Problem zu lösen , wenn es ein Unterschied in SQL Server 2005 und 2008 war http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same- Provider-the-providermanifesttoken-2008-ist-anders-von-2005-das-war-früher-angetroffen /

Klicken Sie mit der rechten Maustaste auf die EDMX-Datei und wählen Sie "Mit XML-Editor öffnen". Öffnen Sie die .edmx-Datei von Entity Framework:

Ändern Sie das ProviderManifestToken in 2008:

Sieht aus, als wäre dies ein bekanntes Problem für Microsoft.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum