DbContext - 三个表之间的多对多关系

时间:2011-05-16 22:44:09

标签: entity-framework entity-framework-4 entity-framework-4.1

好吧,我已经花了一些时间在三张桌子之间建立多对多的关系。 论坛,角色,AccessMask。 在SQL中它想要这样:

ForumID | RoleID | AccessMaskID
--------------------------------
1       | 1      | 2
2       | 2      | 1

等等。你明白了。 ForumID和RoleID是表的主键。问题是..如何在DbContext中做到这一点? alawys尖叫着该实体缺少关键。 (真的吗?)我找到了一种使用modelBuilder在两个表之间建立和多对多关系的方法,但是如你所见,我仍然会缺少一个表

1 个答案:

答案 0 :(得分:3)

这不会是多对多的关系。您必须将此表公开为单独的实体,并映射三个一对多关系。如果联结表仅包含这些表的键,则多对多关系仅在两个表之间起作用。

public class Forum
{
    public int Id { get; set; }
    ...
    public virtual ICollection<ForumRole> ForumRoles { get; set; } 
}

public class Role
{
    public int Id { get; set; }
    ...
    public virtual ICollection<ForumRole> ForumRoles { get; set; } 
}

public class AccessMask
{
    public int Id { get; set; }
    ...
    public virtual ICollection<ForumRole> ForumRoles { get; set; } 
}

public class ForumRole
{
    [Key, Column(Order = 0)]
    public int ForumId { get; set; }
    [Key, Column(Order = 1)]
    public int RoleId { get; set; }
    public int AccessMaskId { get; set; }

    public virtual Forum Forum { get; set; }
    public virtual Role Role { get; set; }
    public virtual AccessMask AccssMask { get; set; }
}
相关问题