2009-09-04 9 views
5

Po przeciągnięciu dwóch tabel z jednej bazy danych przełączam się na inną i przeciągam tabelę. Teraz pojawia się komunikat, jeśli chcę zastąpić ciąg połączenia nowym. Chcę tabel z wielu baz danych w jednym DBML. czy to możliwe?Tabele z dwóch różnych baz danych w DBML?

Odpowiedz

3

Nie wierzę, że to, czego szukasz, jest możliwe, ponieważ DataContext nie będzie wtedy miał łatwego sposobu rozwiązania wyników z dwóch oddzielnych baz danych.

Jeśli chcesz utworzyć obiekty domeny z dwóch oddzielnych baz danych, najlepiej będzie mieć dwa oddzielne DBML, a następnie użyć mostu (GOF) lub innego pokrewnego wzorca projektowego do utworzenia instancji obiektów domeny.

+0

Czy masz linki do tego, jak to działałoby? Myślę, że mam podobną sytuację. Mam jedną główną bazę danych, która zawiera listę klientów oraz nazwę serwera i bazy danych dla każdego klienta. Wszystkie mają identyczną strukturę bazy danych, więc chciałbym wypełnić model z różnych baz danych w zależności od wybranego klienta. – stephenbayer

+1

@stephenbayer - Twoja sytuacja jest trochę inna. Ponieważ dane nie są faktycznie rozłożone wokół wielu DB, twoja praca jest nieco łatwiejsza. Stwórz usługę (sieć, mydło, reszta, nie ma znaczenia dla tej dyskusji), która będzie wiedziała, jak znaleźć ciąg połączenia lub prefiks nazwy bazy danych (bardziej bezpieczny) do twoich baz danych. Użyj identyfikatora klienta jako indeksu do znalezienia konkretnej bazy danych. Twoja aplikacja może wysłać zapytanie do tego klienta db, aby uzyskać informacje na temat łączenia się z konkretną db. –

0

Inną opcją jest utworzenie łącza do serwera w bazie danych, która wskazuje na drugą i utworzenie aliasów do tabel zdalnych z "lokalnego" DB. Sądzę, że będziesz mógł odnieść się do nich tak, jakby wszyscy znajdowali się w tej samej bazie danych.

+0

podczas gdy jest to poprawna technicznie odpowiedź, czy nie byłoby to kiepską praktyką do naśladowania? W przeszłości musiałem radzić sobie z połączonymi serwerami, a z mojego doświadczenia wynika, że ​​nie było to łatwe pod względem łatwości konserwacji czy wydajności –

5

Jest całkowicie możliwe odwoływanie się do wielu baz danych w tym samym DBML, ZAPEWNIANE, że te bazy danych znajdują się na tym samym serwerze SQL.

W Visual Studio kliknij prawym przyciskiem myszy DBML, kliknij "Otwórz za pomocą ..." i wybierz Edytor XML (tekst) z kodowaniem.

Zobaczysz swój pierwszy stół, który przeciągnięty w wygląda następująco:

< Table Name = "dbo.MyTable1fromMyDatabase1" państwo = "MyTable1fromMyDatabase1" >

Dla tabel z innych bazy danych, które chcesz dodać, wprowadź je w następujący sposób:

< Nazwa tabeli = "MyDatabase2.dbo.MyTable1fromM yDatabase2" państwo = «MyTable1fromMyDatabase2» >

to będzie działać przy założeniu, że ta sama nazwa pracuje dla obu baz danych, a Twoje LINQ wyrażenia mogą teraz kwerendy w obu bazach!

0

Możemy również utworzyć widok, który zapyta o tabelę w innej bazie danych. Możemy wybrać, wstawić i zaktualizować ten widok, co wpłynie również na tabelę w drugiej bazie danych.

Powiązane problemy