使用数据注释进行多对多映射

[Table("UserMaster")] public class UserMaster { public UserMaster() { this.Roles = new List(); } [Key] public int UserId { get; set; } public string UserName { get; set; } public ICollection Roles { get; set; } } [Table("Role")] public class Role { public Role() { this.Users = new List(); } public int RoleId{ get; set; } public string Name{ get; set; } public ICollection 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()] 

我们也可以做映射吗?

如果要使用数据注释首先为多对多关系自定义entity framework代码,则必须按以下方式添加联结类:

 [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(); } [Key] public int UserId { get; set; } public string UserName { get; set; } public ICollection UsersInRoles { get; set; } } [Table("Role")] public class Role { public Role() { this.Users = new List(); } public int RoleId{ get; set; } public string Name{ get; set; } public ICollection UsersInRoles { get; set; } } 

并且也看到了这一点 。