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");
        });
}