Entity Framework - 如何配置用户角色多对多关系
Entity Framework - How to configure the User Roles Many to Many Relationship
下面是User实体的定义,有一个navigation属性Roles
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; }
我想要的是定义多对多关系并生成关系 table UserRole 使用 UserId 作为左键和RoleId作为右键,那么配置代码怎么写?
用户:
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; }
}
用户角色:
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");
});
}
下面是User实体的定义,有一个navigation属性Roles
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; }
我想要的是定义多对多关系并生成关系 table UserRole 使用 UserId 作为左键和RoleId作为右键,那么配置代码怎么写?
用户:
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; }
}
用户角色:
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");
});
}