2014-10-07 96 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

相关问题