2009-09-04 88 views
5

從一個數據庫中拖入兩個表後,我切換到另一個表並將其拖入一個表中。現在,如果要將連接字符串替換爲新的表,我會收到一條消息。我想要在一個DBML中來自多個數據庫的表。這可能嗎?來自DBML中兩個不同數據庫的表?

回答

3

我不相信你在找什麼是可能的,因爲DataContext沒有任何簡單的方法來解決來自兩個獨立數據庫的結果。

如果您希望從兩個獨立的數據庫創建域對象,那麼最好的方法是使用兩個獨立的DBML,然後使用橋接(GOF)或其他相關設計模式來實例化您的域對象。

+0

你有鏈接,這將如何工作?我想我有類似的情況。我有一個主數據庫,其中包含客戶端列表以及每個客戶端的服務器名稱和數據庫名稱。它們都具有相同的數據庫結構,因此,我希望根據所選客戶機從不同的數據庫填充模型。 – stephenbayer 2012-04-26 13:24:56

+1

@stephenbayer - 你的情況實際上有點不同。由於數據並不是實際分佈在多個數據庫中,因此您的工作更容易一些。創建一個服務(web,soap,rest,這個討論無關緊要),它將知道如何爲你的數據庫找到連接字符串或數據庫名稱前綴(更安全)。使用客戶端標識符作爲查找特定數據庫的索引。您的應用程序可以查詢此客戶端數據庫以獲取有關如何連接到特定數據庫的信息。 – 2012-04-29 14:55:01

0

另一個選擇是在數據庫上創建一個服務器鏈接,指向另一個服務器並從「本地」數據庫向遠程表發出別名。我相信你可以引用它們,就好像它們都在同一個數據庫中一樣。

+0

雖然這是一個技術上正確的答案,但這不是一個不好的做法嗎?過去我不得不處理鏈接的服務器,並且根據我的經驗,在可維護性或性能方面並不理想 – 2009-09-04 16:28:16

5

完全有可能在同一個DBML中引用多個數據庫,提供這些數據庫駐留在同一個SQL Server上。

在Visual Studio中,右鍵單擊DBML,單擊「打開方式...」,然後選擇帶編碼的XML(文本)編輯器。

你會看到,你看起來像拖着這是你的第一個表:

<表名= 「dbo.MyTable1fromMyDatabase1」 會員= 「MyTable1fromMyDatabase1」 >

對於其他的表數據庫,你想添加,像這樣輸入:

< Table Name =「MyDatabase2.dbo.MyTable1fromM yDatabase2" 會員=‘MyTable1fromMyDatabase2’>

這將工作假設相同的登錄同時適用於數據庫,而LINQ表達式現在可以在這兩個數據庫的查詢!

0

我們也可以創建一個視圖來查詢其他數據庫中的表。我們可以選擇,插入和更新這個視圖,這也會影響另一個數據庫中的表。

相關問題