2011-02-10 108 views
4

我有一個模型在我的項目中映射到我的數據庫中的很多視圖,但我需要映射到另一個數據庫中的視圖。EF模型映射多個數據庫

我該怎麼做?我必須創建另一個模型嗎?我不想,但我會,如果我必須。

回答

3

相同的模型不能從兩個不同的數據庫中獲取數據。最簡單的方法是在同一個數據庫中創建一個視圖,從另一個數據庫調用並返回數據,即內部調用外部數據庫視圖的抽象視圖。

+0

啊,怎麼我會願意讓來自其他數據庫數據的視圖。事實上,我想這樣做,但我被告知可能性被禁止。 :P – khr055 2011-02-11 20:09:22

2

如果您的數據庫支持同義詞,您可以爲另一個數據庫設置同義詞,並將edmx定義與第一個數據庫的定義合併。我寫了如何去做here

基本上你最終會得到兩個edmx文件和一個將兩者合併成一個工作edmx文件的腳本。同義詞用於引用另一個數據庫而不需要完整的數據庫路徑。

0

如果在實體框架使用代碼第一種方法,這裏是如何EF實體映射到其他數據庫中的表:

SQL腳本,需要在數據庫中運行,以從其他表創建同義詞數據庫:

CREATE SYNONYM OtherDatabaseTableSynonym FOR otherdatabase.dbo.otherdatabasetable 

實體框架映射在(流利API):

modelBuilder.Entity<OtherDatabaseTableEntity>().ToTable("OtherDatabaseTableSynonym").HasKey(x => x.id);