2009-11-19 54 views
44

使用VS 2010 beta 2,ASP.NET MVC。實體框架一對一映射問題

我試圖創建一個實體框架文件,並從我的數據庫中獲取數據。

有一些問題的關係,所以我開始四處調整的事情,但我一直得到了簡單的一對一的關係以下錯誤

錯誤1錯誤113:多重無效在關係'FK_UserProfiles_Users'中的角色'UserProfile'中。因爲依賴角色屬性不是關鍵屬性,所以依賴角色的多重性的上界必須是*。 myEntities.edmx 2024

我的用戶表是由其它表的一些其他許多一對多的關係,但是當我試圖讓與其他表一比一的關係,這個錯誤彈出。

用戶表格

  • 用戶ID
  • 用戶名
  • 電子郵件

等。

表的UserProfiles

  • UserProfileID
  • 用戶ID(FK爲用戶表)
  • 位置
  • 生日

回答

65

對於一對一的關係,EF預計,表可以使用相同的主鍵。實際上,如果這是真正的一對一,他們可能應該。因此,在您的示例中,如果您將UserID作爲UserProfiles表上的主鍵,則您的一對一工作將會起作用。

+12

我得到這個問題,試圖建立主表和擴展表之間的0..1到1的關係。作爲很多其他關係的延伸,所以我不想混淆那個PK。任何想法如何解決這種類型的情況? – Andreas 2011-01-04 14:19:51

+1

@junior:這是一個外鍵關係,你可以通過選擇關係,進入屬性,改變「End1 Multiplicity」和「End2 Multiplicity」設置(不確定這是否僅限於VS 2010)。很可能,您將設置「End2 Multiplicity」爲「0..1」。 – 2011-01-04 17:55:34

+0

即使EF無法正確處理正常的RA多重性,也不會產生*「應該」*,從而迫使改變完美的RA設計。這並不意味着*模型應該改變,當前的情況不會改變 - 意味着EF和它今天似乎仍然被破壞,應該*固定*來正確模擬RA數據庫域。 – user2864740 2014-12-22 19:51:03

10

我有一個類似的問題,但與銷售和layby場景。

平躺可以存在沒有銷售,並且銷售可以存在沒有layby。這意味着我有一個0或10或1的關係。

Layby引用銷售,但layby不能使用Sale的主鍵,而Sale不能使用Layby的主鍵。

我用0或1許多關係的問題解決了,配置上出售爲私有的「Laybys」 getter和setter,然後在我的POCO提供我自己的「停車處」 getter和setter 。

+3

我很好奇,你有沒有找到更好的方法來捕捉這種關係? – Hannele 2014-03-04 16:05:39