使用数据注释进行多对多映射
[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; } }
并且也看到了这一点 。