好吧,我已经花了一些时间在三张桌子之间建立多对多的关系。 论坛,角色,AccessMask。 在SQL中它想要这样:
ForumID | RoleID | AccessMaskID
--------------------------------
1 | 1 | 2
2 | 2 | 1
等等。你明白了。 ForumID和RoleID是表的主键。问题是..如何在DbContext中做到这一点? alawys尖叫着该实体缺少关键。 (真的吗?)我找到了一种使用modelBuilder在两个表之间建立和多对多关系的方法,但是如你所见,我仍然会缺少一个表
答案 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; }
}