2009-09-04 15 views
5

Nachdem ich zwei Tabellen aus einer Datenbank gezogen habe, wechsle ich zu einer anderen und ziehe eine Tabelle hinein. Jetzt bekomme ich eine Nachricht, wenn ich die Verbindungszeichenfolge durch die neue ersetzen möchte. Ich möchte Tabellen aus mehreren Datenbanken in einem DBML. Ist das möglich?Tabellen aus zwei verschiedenen Datenbanken in einem DBML?

Antwort

3

Ich glaube nicht, dass das, was Sie suchen, möglich ist, da der DataContext dann keine einfache Möglichkeit hat, Ergebnisse aus zwei getrennten Datenbanken zu berechnen.

Wenn Sie Domänenobjekte aus zwei separaten Datenbanken erstellen möchten, sollten Sie zwei separate DBMLs verwenden und dann eine Brücke (GOF) oder ein anderes verwandtes Designmuster verwenden, um Ihre Domänenobjekte zu instanziieren.

+0

Haben Sie Links, wie das funktionieren würde? Ich denke, ich habe eine ähnliche Situation. Ich habe eine Master-Datenbank, die eine Liste von Clients und den Servernamen und den Datenbanknamen für jeden der Clients enthält. Sie alle haben eine identische Datenbankstruktur. Daher möchte ich das Modell abhängig vom ausgewählten Client aus verschiedenen Datenbanken füllen. – stephenbayer

+1

@stephenbayer - deine Situation ist eigentlich ein bisschen anders. Da die Daten nicht auf mehrere DB verteilt sind, ist Ihre Arbeit etwas einfacher. Erstellen Sie einen Dienst (Web, Soap, Rest, spielt für diese Diskussion keine Rolle), der wissen kann, wie Sie Ihren DBs eine Verbindungszeichenfolge oder ein Datenbank-Präfix (sicherer) zuordnen können. Verwenden Sie eine Client-ID als Index, um die bestimmte Datenbank zu finden. Ihre App kann diese Client-Datenbank nach Informationen zur Verbindung mit der spezifischen Datenbank abfragen. –

0

Eine weitere Option besteht darin, eine Serververknüpfung in einer Datenbank zu erstellen, die auf die andere verweist und Aliasnamen für die Remotetabellen aus der lokalen DB erstellt. Ich glaube, dann könntest du auf sie verweisen, als ob sie alle in derselben Datenbank wären.

+0

Während dies eine technisch korrekte Antwort ist, wäre das nicht eine schlechte Praxis zu folgen? Ich musste in der Vergangenheit mit Verbindungsservern umgehen, und meiner Erfahrung nach war es in Bezug auf Wartbarkeit oder Leistung nicht schön –

5

Es ist durchaus möglich, mehrere Datenbanken innerhalb derselben DBML zu referenzieren, vorausgesetzt, diese Datenbanken befinden sich auf demselben SQL Server.

Klicken Sie in Visual Studio mit der rechten Maustaste auf die DBML, klicken Sie auf "Öffnen mit ...", und wählen Sie XML (Text) -Editor mit Codierung.

Sie werden sehen, Ihre erste Tabelle, die Sie in sieht wie folgt gezogen:

< Tabellenname = "dbo.MyTable1fromMyDatabase1" Member = "MyTable1fromMyDatabase1" >

Für Ihre Tabellen aus anderen Datenbanken, die Sie hinzufügen möchten, geben Sie sie wie folgt ein:

< Tabellenname = "MyDatabase2.dbo.MyTable1fromM yDatabase2" Member = ‚MyTable1fromMyDatabase2‘ >

Dies funktioniert die gleiche Anmeldung für beide Datenbanken arbeitet unter der Annahme, und Ihre LINQ Ausdrücke können nun über beide Datenbanken abfragen!

0

Wir können auch eine Ansicht erstellen, die die Tabelle in der anderen Datenbank abfragt. Wir können diese Ansicht auswählen, einfügen und aktualisieren, was sich auch auf die Tabelle in der anderen Datenbank auswirkt.

Verwandte Themen