99

我從我的數據庫中生成了一個實體框架模型(4.0)。我沒有設計數據庫,也沒有對模式進行任何控制,但有幾個表沒有定義外鍵約束,但卻有一個隱式關係定義。實體框架 - 手動添加導航屬性

例如:

我有以下幾列一個表就叫人: GenderID RaceID

有兩個性別和種族的表,但沒有在人民表的外鍵。

當我導入模型時,它沒有爲這些關係添加導航屬性。我試圖手動添加它,但從角色和角色被禁用。我不知道如何自己添加關係。我該怎麼做呢?

回答

164

是的 - 這不是那麼簡單。

這裏就是你要做的:

1 - 右鍵單擊​​設計師,添加 - >協會

2 - 設置的關聯和基數(人*。1分性別,人民* ..1種族)

3 - 去到模型瀏覽器 - >協會

4 - 鼠標右鍵點擊你新建的協會,單擊屬性

5 - 在這裏你需要設置密鑰和級聯方案的終結點。確保你得到正確的端點。您也可以在此爲您的隱式導航屬性設置引用約束。

6 - 將導航屬性映射到相關表/字段。

7 - 驗證您的模型,交叉手指。

希望這會有所幫助。

+18

+1用於保存我的頭髮剩下的部分。我將添加#6需要更改關聯的屬性頁面中的外鍵列,參照約束設置。點擊[...]以打開參考約束對話框,並將設計器插入子表中的虛擬字段更改爲從屬屬性。 – 2011-12-17 23:25:55

+7

您還必須轉到子表的屬性並刪除設計者添加的虛擬字段(並且該字段不映射到子表中的任何實際字段)。 – 2011-12-17 23:41:47

+1

在查看的情況下,還要確保您的主鍵定義正確(右鍵單擊選擇相關字段,在屬性中將它們標記爲EntityKey)。 否則,您可能會得到'多重性在關係中的角色中無效因爲相關角色指的是關鍵屬性...' – 2015-04-17 00:32:18

39

我碰到了this blog post,它提出了以下解決方案,這對我很好(不幸的是我無法讓RPM1984在我的情況下工作)。

  1. 通過設計師的背景添加關聯右鍵點擊
  2. 設置你的公會上下文菜單(一定要取消建立外鍵)
  3. 右鍵單擊該協會並選擇屬性
  4. 點擊......按鈕參照約束
  5. 設置內
  6. 按鍵之間的關係,驗證(從設計師的上下文菜單)
  7. ???
  8. 利潤!
+3

+1第4點讓我做對了,用RPM194答案忽略了這一點。 – 2014-05-21 18:21:09