2011-11-11 221 views
0
外鍵映射

用下面的數據庫模式:

用戶:用戶ID(主鍵)
的UserInfo:UserInfoID(主鍵),用戶ID(外鍵),[其他用的UserInfo數據列]
實體框架4.1 - 在POCO

User和UserInfo有1-1的關係。我想這個模式映射到以下波蘇斯:

public class User 
{ 
    [Key] 
    public int UserID {get;set;} 

    public virtual UserInfo userinfo {get;set;} 
} 
public class UserInfo 
{ 
    [Key] 
    public int UserInfoID {get;set;} 

    public int UserID {get;set;} 

    [ForeignKey("UserID")] 
    public virtual User User {get; set;} 

    ... Other properties of UserInfo... 
} 

基本上,我希望能夠加載一個用戶對象,並有相關的UserInfo對象現在。這似乎是一個簡單的任務,但我無法找到正確的屬性和/或流利API組合來完成此任務。

編輯:我發現使用戶的UserInfo屬性一個ICollection,然後一切正常。所以我現在的問題是,有沒有辦法避免使用ICollection,因爲我知道用戶將有1或0關聯的UserInfo記錄。

回答

2

對於一對一場景,您必須在兩個實體上使用與key和fk相同的屬性。 嘗試使用UserId屬性作爲UserInfo實體的Id,然後像Fk到User屬性。

+0

啊,現在有道理。 EF無法分辨UserID是事實關鍵,因此它必須允許UserInfo成爲ICollection。將[key]屬性移動到UserID就有訣竅。 –