以下是用户实体的定义,有一个导航属性角色
public class User
{
public User()
{
Roles = new List<Role>();
}
public string Id { get; set; }
public string Username { get; set; }
public virtual ICollection<Role> Roles { get; set; }
以下是角色实体的定义
public class Role
{
public string Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
我想要的是定义多对多关系,并生成一个关系表 UserRole ,使用 UserId 作为左键, RoleId 作为正确的密钥,那么如何编写配置代码?
答案 0 :(得分:0)
用户:
public class User
{
public User()
{
Roles = new List<Role>();
}
public string Id { get; set; }
public string Username { get; set; }
public virtual ICollection<UserRole> Roles { get; set; }
}
<强>作用:强>
public class Role
{
public string Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
<强>的UserRole:强>
public class UserRole
{
public string Id { get; set; }
public string UserId { get; set; }
public string RoleId{ get; set; }
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
覆盖dbcontext中的OnModelCreating
方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>()
.HasMany(c => c.Roles )
.WithMany()
.Map(x =>
{
x.MapLeftKey("UserId");
x.MapRightKey("RoleId");
x.ToTable("UserRoles");
});
}