2011-06-01 72 views
1

所以我有一個表在我的SQL數據庫:導航屬性上聯接表實體框架

CompanyRelationships 
-------------------- 
ID 
CompanyID 
RelatedCompanyID 
PermissionGroupID 

當一個公司可以訪問它的記錄,以另一家公司其中定義。 「CompanyID」是授予訪問權限的公司,「RelatedCompanyID」是正在獲取訪問權限的公司。

是,兩個記錄可能存在相同的兩家公司(每個授權訪問等)

問題是,當我生成數據庫實體模型(在Visual Studio 2010),導航性能我獲得並不完全有幫助,哪個是哪個。我得到:

Company 
Company1 
UserGroup

用戶組當然是顯而易見的,但我想知道哪些公司引用是,因爲這是樣很重要的。我確信我可以測試它並發現,但是我必須重新測試以確保每次從數據庫重新生成時都是如此。有沒有辦法強制將導航屬性命名爲FK字段的名稱,而不是它所鏈接的實體?

+1

我爲此https://github.com/timabell/ef-edmx-nav-namer製作了一個基本的.net控制檯應用程序 – 2015-08-13 15:53:49

+1

@TimAbell真棒,您應該添加它作爲這個問題的答案,所以它是讀取此內容的其他人更容易看到。我認爲大多數人都通過評論。 – 2015-08-13 16:18:16

+0

好的,如果你認爲它值得:-)這是非常粗糙和準備。 – 2015-08-13 18:56:39

回答

2

您可以隨時點擊模型瀏覽器中實體的導航屬性,然後查看屬性窗口。窗口顯示關聯名稱(在數據庫中添加表關係時創建)。一旦確定了關係,您總是可以將導航屬性名稱重命名爲您選擇的名稱。

例如,單擊「公司1」實體圖中的導航屬性會顯示關係名稱爲「Company_Id_to_Related_Company_Id」(或任何名稱)。一旦知道它的含義,您可以將導航屬性重命名爲一個有意義的名稱,如「MasterCompany」。

+0

哈,這很棒,我一直在屬性窗口中尋找一些東西,但沒有注意到關聯名稱改變了(它在最後被截斷,不同的部分) – 2011-06-02 13:52:25

1

抓住這個命令行應用https://github.com/timabell/ef-edmx-nav-namer,編譯在Visual Studio,以及對你的EDMX文件運行它像這樣(做備份第一!):

EfEdmxNavNamer.exe -i path\to\your\Model.edmx 

對於下面的項名稱:FK_Parent_Child它將在每端設置導航屬性如下:

  • 父實體:「子女」
  • 在子實體:「父」

這只是真正涵蓋了最基本的情況,但它是一些東西。如果您想要改善請求,歡迎提出請求。它是Apache 2.0許可的。