C# EF Code First many to many:如何指定第三个表的名称并向其添加一些其他属性?

C# EF Code First many to many:如何指定第三个表的名称并向其添加一些其他属性?,c#,asp.net-mvc,entity-framework,many-to-many,code-first,C#,Asp.net Mvc,Entity Framework,Many To Many,Code First,我需要首先在实体框架代码中实现多对多关系,并将此关系映射到第三个表。我想在此表中添加一些其他字段,例如自动递增Id和AppointmentDateTime: public class User { public int Id { get; set; } // some other properties ...... public virtual List<Role> Roles { get; set; } } public class UserTypeCon

我需要首先在实体框架代码中实现多对多关系,并将此关系映射到第三个表。我想在此表中添加一些其他字段,例如自动递增Id和AppointmentDateTime:

public class User {
    public int Id { get; set; }
    // some other properties ......
    public virtual List<Role> Roles { get; set; }
}

public class UserTypeConfiguration : EntityTypeConfiguration<User> {
    public UserTypeConfiguration() {
        HasKey(k => k.Id);
        Property(p => p.Email).IsRequired();
        //[∞ — ∞]
        HasMany<Role>(u => u.Roles).WithMany(r => r.Users).Map(m => m.MapLeftKey("UserId").MapRightKey("RoleId").ToTable("UserRoles"));
    }
}
公共类用户{
公共int Id{get;set;}
//其他一些物业。。。。。。
公共虚拟列表角色{get;set;}
}
公共类UserTypeConfiguration:EntityTypeConfiguration{
公共用户类型配置(){
HasKey(k=>k.Id);
属性(p=>p.Email).IsRequired();
//[∞ — ∞]
有许多(u=>u.Roles)。有许多(r=>r.Users)。Map(m=>m.MapLeftKey(“UserId”).MapRightKey(“RoleId”).ToTable(“UserRoles”);
}
}
但实体框架生成的表具有错误的名称(我传递的名称是错误的),以及错误的名称(我传递给映射的导航项目)

表“RoleUsers”的名称和导航代理的名称是“User_Id”和“Role_Id”


如何实现正确的映射名称以及如何向用户角色表添加其他属性?

,因为需要添加附加属性来描述关系,必须考虑多到多个关联:21个到多个关联:

public class User
{
    // other properties omitted
    public virtual List<UserRole> UserRoles { get; set; }
}

public class Roles
{
    // other properties omitted
    public virtual List<UserRole> UserRoles { get; set; }
}

public class UserRole
{
    public int Id { get; set; }
    public DateTime AppointmentDateTime { get; set; }
    public int UserId { get; set; }
    public User User { get; set; }
    public int RoleId { get; set; }
    public Role Role { get; set; }
}
公共类用户
{
//省略了其他属性
公共虚拟列表用户角色{get;set;}
}
公共类角色
{
//省略了其他属性
公共虚拟列表用户角色{get;set;}
}
公共类用户角色
{
公共int Id{get;set;}
公共日期时间指定日期时间{get;set;}
public int UserId{get;set;}
公共用户{get;set;}
public int RoleId{get;set;}
公共角色{get;set;}
}
配置:

public class UserRoleConfiguration : EntityTypeConfiguration<UserRole> 
{
    public UserRoleConfiguration()
    {
        // scalar properties config omitted
        HasRequired(_ => _.User)
            .WithMany(_ => _.UserRoles)
            .HasForeignKey(_ => _.UserId);

        HasRequired(_ => _.Role)
            .WithMany(_ => _.UserRoles)
            .HasForeignKey(_ => _.RoleId);

        ToTable("UserRoles");
    }
}
公共类UserRoleConfiguration:EntityTypeConfiguration { 公共用户角色配置() { //标量属性配置省略 HasRequired(=>u979;.User) .WithMany(=>wu.UserRoles) .HasForeignKey(=>.UserId); HasRequired(=>wk.Role) .WithMany(=>wu.UserRoles) .HasForeignKey(=>.RoleId); ToTable(“用户角色”); } }