2011-09-06 135 views
12

我正在使用ADO .NET實體框架從數據庫中導入模型。我的數據庫中的表有一堆外鍵,所有外鍵都有抽象名稱,例如FKDevice132610使用實體框架導航屬性的有意義名稱

當我將表格導入到我的模型中時,它會爲每個外鍵引入導航屬性,但是會根據它們鏈接的表名稱導入屬性。如果某個表中有多個外鍵,則在結尾添加一個數字。

Ef model

在這種情況下是Devices1和ParentDevices是Devices2 ChildDevices。有沒有一種方法可以將這些信息輸入到我的外鍵中(比如使用描述或名稱),以便實體框架爲我的導航屬性導入有意義的名稱?

回答

5

據我所知目前沒有辦法做到這一點。這是當前設計師的工作原理。當你將這些屬性重命名爲正確的名稱更新數據庫模型時,更有甚者會覆蓋你的更改。導航屬性命名的

改善是通過此工作項跟蹤 - http://entityframework.codeplex.com/workitem/125

+3

這是蹩腳的......愚蠢的英孚:( – link664

+3

在這種情況下,它不是EF的失敗,這是設計師的失敗 - 你可以使用沒有設計師的EF,或者使用代碼優先的方法,或者如果你想從EF獲得最好的手動編寫XML映射。 –

0

想知道是否在「modelBuilder.Conventions.Remove」上進行搜索會引導您找到解決方案。 我希望我可以更多的幫助,但我只是開始探索EF。當我有多個字段指向相同的ID時,會出現類似的情況......我不記得周圍的工作是什麼。

+0

模型構建器和設計器沒有任何共同之處。這兩個是完全不同場景中使用的功能。 –

0

四年後...
直到EF團隊解決了this issue,一個可能的解決方法可能是使用外部工具來分析.edmx文件並用更有意義的導航名稱替換所有以 <NavigationProperty Name=開頭的文本。
作爲XML,非常容易解析和查找多樣性,FK名稱等屬性。

相關問題