2016-09-20 1 views
0

Ich arbeite an ASP.NET-Kern-Anwendung, wo ich Entity Framework für die Interaktion mit SQL Server-Datenbank verwenden. Bisher habe ich den Befehl Scaffold-DbContext verwendet, um ein neues Modell aus der SQL Server-Datenbank zu erstellen. Selbst wenn wir DbContext basierend auf mehreren Tabellen erstellen wollten, konnte ich das unter Verwendung des Flags -t im obigen Befehl tun. Alles geschieht in einer einzigen SQL-Datenbank.Join mehrere Tabellen aus verschiedenen Datenbanken

Scaffold-DbContext "Server=XXXXXXXXX;Database=XXXXXXXX;User Id=XXXXX;Password:XXXXXX" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1 Table2 

Von Scaffold-DbContext parameters Befehle, die ich finden konnte Option nicht verschiedene Datenbanken angeben.

Im neuen Szenario muss ich 2 Tabellen aus verschiedenen SQL-Datenbanken beitreten. Gibt es eine Möglichkeit, ein Modell zu erstellen, das aus 2 Tabellen aus verschiedenen Datenbanken besteht? Beide Tabellen verwenden eine Eins-zu-eins-Beziehung zwischen ihnen.

Zum Beispiel - DB1 hat table1 und DB2 hat table2. Gibt es eine Möglichkeit, eine DbContext zu erstellen, die aus diesen 2 Tabellen (Tabelle1 und Tabelle2) besteht?

Gibt es eine andere Möglichkeit, eine Verbindung zwischen 2 Tabellen aus 2 verschiedenen Datenbanken zu erreichen?

+1

Das Verbinden von Datenbanken wird in keiner EF-Version unterstützt. Sie können jedoch jede Datenbank einzeln abfragen und dann mit linq zu Objekten verbinden. – jrummell

Antwort

1

Nein, das geht nicht mit EntityFramework (weder 6.x noch Core). Ein DbContext ist pro Datenbank und Sie können nur Verbindungen innerhalb desselben DbContext tun.

Sie können eine Ansicht erstellen und die Ansicht den Modellen zuordnen, die Sie benötigen, aber die iirc. Das Mapping von Ansichten befindet sich immer noch auf der Roadmap für EntityFramework Core. Kann aber mit EntityFramework 6.x arbeiten.

Edit:

Mindestens Sie können tun es nicht mit Linq/Fluent api. Sie können jedoch raw queries ausführen. Der Catch: Das Projekt muss exakt dem Modell entsprechen, es dürfen keine fehlenden Felder des Modells sein. Die Ad-hoc-Zuordnung zu Nicht-Entitäten befindet sich in der Roadmap für zukünftige Versionen von EntityFramework Core

+0

Danke @Tseng für Vorschläge. wird versuchen, rohe Abfragen zu verwenden. – Sanket

+1

Wenn Sie SQL Server verwenden, könnten Sie vielleicht das "Synonym" in SQL Server ausprobieren, ein "Synonym" der Tabelle in einer anderen Datenbank erstellen und aus der Perspektive von EF als lokale Tabelle behandelt werden. Ich habe es aber selbst nicht ausprobiert. – Ricky

Verwandte Themen