2014-06-09 64 views
0

我可以在設計視圖中進入EDMX並更新關聯的基數(1- ,0-等),但我想知道在這種情況下是否可以這樣做。如何告訴EntityFramework 5.0兩個實體之間存在一對一的關聯?

我有這兩個表,讓我們說:

User 
----- 
Id 


UserProfile 
------------- 
Id 
UserId 
Stuff 

一個用戶可能只有一個配置文件。因此,我已經設置了一個UNIQUE約束,不包括UserProfile表中的UserId列。另外,UserProfile.Id被定義爲引用User.Id的外鍵。

然而,在實體框架模型,我得到如下:

class User 
{ 
    ICollection<UserProfile> UserProfiles { get; set; } 
} 

起初,我有UserProfile表沒有自己的任何這樣的主鍵:

UserProfile 
-------------- 
UserId 
Stuff 

但EntityFramework將它設置爲只讀,因爲它需要在每個要使其可寫的表上有主鍵。所以,我在UserProfile表中也輸入Id列。

UPDATE

我試着設置在我的EDMX在設計師的User表和UserProfile表之間的關聯的multiplicit /基數。但是,我得到這個錯誤提示我應該回到原來的狀態,即一對多的關係。

Running transformation: Multiplicity is not valid in Role 'UserBasicProfile' 
in relationship 'FK_UserBasicProfile_User'. Because the Dependent Role 
properties are not the key properties, the upper bound of the multiplicity 
of the Dependent Role must be *. 

回答

0

我找到了一種方法。那麼,不是純粹的1-1關係,而是1-0..1的關係,我之前的觀點是,這是一種一對一的關係。

如果你落入這個陷阱就像我在我的問題描述,這裏就是你要做的:

1)從依賴表中刪除Id領域,在這種情況下,UserProfile表。因此,不要給它一個單獨的主鍵。

2)而是將從屬的表中的外鍵標記爲其自己的主鍵。在這種情況下,將UserId字段本身標記爲UserProfile表的主鍵。

除了這兩個,我認爲,我在,你有(在這種情況下User表)的權威之間的主鍵和外鍵關係中的問題和依賴表所示(本例中的UserProfile表)。

所以,你新表的結構應該是這樣的:那麼

User 
------ 
Id 


UserProfile 
------------- 
UserId (foreign key, and also the primary key of this UserProfile table) 
Stuff 

實體框架將認識到這一點1-0..1關係。

相關問題