Entity Framework 4 und mehrere Datenbanken

8

Etwas ändert sich oder es unterstützt das immer noch nicht? Zum Beispiel Join database1.dbo.Users und database2.dbo.Addresses

    
dotneter 17.04.2010, 20:31
quelle

3 Antworten

3

Ich denke, was gefragt wird, ist, wenn Sie Tabellen aus verschiedenen Datenbanken, nicht verschiedenen Providern beitreten können, was dazu führt, dass eine Entität zwei oder mehr Tabellen oder Ansichten aus verschiedenen Datenbanken zugeordnet ist .

Wenn Sie darüber nachdenken, wenn Sie ein EDM-Modell mit Visual Studio erstellen, werden Sie aufgefordert, eine vorhandene Datenbank anzugeben. Wenn das Modell fertig ist, generiert es eine EF-Verbindungszeichenfolge, die intern an die angegebene zugrunde liegende Datenbankverbindung adressiert Zeichenfolge.

Beispiel: metadata = res: // /EFTestModel.csdl|res: // /EFTestModel.ssdl|res/: /EFTestModel.msl;provider= System.Data.SqlClient; Anbieterverbindungszeichenfolge="Datenquelle =. \; Ursprünglicher Katalog = EFTest; Integrierte Sicherheit = True; MultipleActiveResultSets = True " *

Also stimmt jedes Modell nur mit einer Datenbank überein, nur eine Verbindungszeichenfolge.

EF4 unterstützt immer noch nicht das Erstellen eines konzeptionellen Modells, das mit N Speichermodellen arbeitet. Zumindest wird dies bei keinem integrierten Provider unterstützt. Vielleicht könnte dies in Zukunft durch einen neuen Provider geschehen, der die Unterstützung vieler Speicher (von den gleichen Anbietern oder von verschiedenen) kombiniert.

Ich habe nicht genug Nachforschungen darüber angestellt, aber Windows Server AppFabric (Codename Velocity) könnte die Brücke sein, um diese Lücke zu schließen.

Hinweis: Ich habe sogar versucht, das XML für das EDM (edmx) manuell zu bearbeiten, um ein zweites Element in das & lt; edmx: StorageModels & gt; Tag, aber es stimmt nicht mit dem EDM-XML-Schema überein, deshalb warnt VS davor: Fehler 10021: Doppeltes Schema-Element gefunden.

Rafa Ortega MAP2010

    
rortega 07.05.2010, 11:21
quelle
4

Ich habe tatsächlich einen Weg gefunden, ein EF-Modell über mehrere Datenbanken zu erstrecken, wenn Ihre Datenbank Synonyme unterstützt. Im Grunde genommen richten Sie Synonyme für Database2 auf Database1 ein, erstellen für jedes einzelne Edmx-Modelle und führen dann das XML zusammen

Ich habe die genauen Schritte gepostet, um eine EDMX-Datei über mehrere Datenbanken zu verteilen. hier , wenn Sie interessiert sind, zusammen mit einem Skript, das die Zusammenführung für Sie übernimmt, sobald sich etwas ändert.

    
Rachel 24.05.2011 20:11
quelle