2011-03-24 155 views
0

是否可以在實體框架4(模型優先)中更改特定實體映射到的表的名稱?我需要爲每個客戶創建一個模型,因此需要在表名前加上。也許更簡單的是爲每個客戶使用一個數據庫。最佳做法是什麼?使用實體框架在運行時更改表名稱4

回答

2

使用每個客戶的數據庫。數據庫必須具有相同的模式。在運行時修改映射不是一個好主意。

編輯:指EDMX每個客戶每個客戶

模型。請注意,元數據是共享的。因此,在多租戶應用程序(即我瞭解您的描述)中,每次元數據更改都會更改每個請求的元數據。在安全性和性能方面,使用單獨的數據庫看起來更好。

另一個問題是如果元數據可以在運行時更改。元數據存儲在MetadataWorkspace中。你可以閱讀它們,但我不確定你是否也可以修改它們(我將在週末檢查它)。

+0

爲什麼它不是一個好主意?我參與了至少一些使用每個客戶模型的項目(而不是每個客戶的數據庫)。並命名發佈的企業產品Dynamics NAV。 – Jsfsn 2011-03-25 00:25:25

+0

@Jsfsn:作爲一名具有8年SQL經驗的Dynamics NAV技術顧問,我敢說NAV並不是一個如何組織數據庫的好例子。我認爲SAP Business One可以做得更乾淨,但是他們擁有那些非常縮短的表名。除此之外,NAV的公司與1個以上的客戶並不相同,更像是1個客戶的細分。 – 2011-03-25 08:57:52

0

EF生成的模型根據您的數據庫模式生成。我沒有看到如何改變EF中的模式。不在我的小腦袋裏計算。這就是說,你可以編寫一個存儲過程來改變表格,並通過你的EF上下文來調用存儲過程。

+0

我不想重命名該表,我希望EF爲每個表名稱使用用戶定義的(如代碼中)定義的前綴。我沒有嘗試過,但我確信使用EF CF是微不足道的。但是,內部查詢有一個問題妨礙我使用EF CF。 – Jsfsn 2011-03-25 00:27:10