[Table("UserMaster")]
public class UserMaster
{
public UserMaster()
{
this.Roles = new List<Role>();
}
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public ICollection<Role> Roles { get; set; }
}
[Table("Role")]
public class Role
{
public Role()
{
this.Users = new List<UserMaster>();
}
public int RoleId{ get; set; }
public string Name{ get; set; }
public ICollection<UserMaster> Users { get; set; }
}
我使用EntityTypeConfiguration映射这些表,并触发OnModelCreate
this.HasMany(a => a.Roles).WithMany(b => b.Users).Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
m.ToTable("UsersInRoles");
});
我想知道是否有办法在类Role或UserMaster中映射它们。我们可以使用
[ForeignKey()]
[Key]
[Table()]
我们也可以做映射吗?
答案 0 :(得分:13)
如果要使用数据注释首先为多对多关系自定义实体框架代码,则必须按以下方式添加联结类:
[Table("UsersInRoles")]
public class UsersInRoles
{
[Key]
[Column(Order = 1)]
[ForeignKey("UserMaster")]
public int UserId { get; set; }
[Key]
[Column(Order = 2)]
[ForeignKey("Role")]
public int RoleId { get; set; }
public UserMaster UserMaster { get; set; }
public Role Role { get; set; }
}
然后必须将相关的类更改为:
[Table("UserMaster")]
public class UserMaster
{
public UserMaster()
{
this.Roles = new List<Role>();
}
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public ICollection<UsersInRoles> UsersInRoles { get; set; }
}
[Table("Role")]
public class Role
{
public Role()
{
this.Users = new List<UserMaster>();
}
public int RoleId{ get; set; }
public string Name{ get; set; }
public ICollection<UsersInRoles> UsersInRoles { get; set; }
}
并且还可以看到this。