2014-10-07 152 views
1

我得到了以下場景:實體框架6兩個不同的集合提及相同的實體

用戶可以是社區的總裁或經理。當指定導航屬性向社會連接到它的總裁和管理,我得到這個:

public class Community 
{ 
    ... 

    [ForeignKey("President")] 
    public int? PresidentId { get; set; } 
    public virtual User President { get; set; } 

    [ForeignKey("Manager")] 
    public int? ManagerId { get; set; } 
    public virtual User Manager { get; set; } 
} 

但是這裏來,我無法找到一個解決方案的一部分。我想對用戶reffering每到他們所管理的社區兩個集合,和那些他們主持:

public class User 
{ 
    ... 

    public virtual ICollection<Community> ManagedCommunities { get; set; } 

    public virtual ICollection<Community> PresidedCommunities { get; set; } 
} 

我無法找到如何使第一個點只對那些任何文件用戶管理和第二到他所預測的。 在此先感謝。

+0

我可以加載我用來檢索數據的方法集合,我想知道的是實體框架有一種方法來定義這種關係。 – JCabello 2014-10-07 13:46:36

+0

另一種可能的方法是使「CommunityRelation」表的「IsManager/IsPresident」附加屬性或某個枚舉值來表示該屬性。這也會讓你稍後可以輕鬆添加更多角色類型,而不會改變現有邏輯的大部分 – 2014-10-07 14:52:40

回答

4

Code First Data Annotations (MSDN)中所述,您可以使用InverseProperty屬性。

[InverseProperty("Manager")] 
public virtual ICollection<Community> ManagedCommunities { get; set; } 

[InverseProperty("President")] 
public virtual ICollection<Community> PresidedCommunities { get; set; } 
+0

我真的認爲我更關注我的搜索技巧。非常感謝,現在我感到有些尷尬(定時器到期時標記爲正確)。 – JCabello 2014-10-07 13:55:25

相關問題