C# EF Code First many to many:如何指定第三个表的名称并向其添加一些其他属性?
我需要首先在实体框架代码中实现多对多关系,并将此关系映射到第三个表。我想在此表中添加一些其他字段,例如自动递增Id和AppointmentDateTime: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
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(“用户角色”);
}
}