我正试图建立一个关键的关系(一个---到多个)
让applicationUser对现有人员表有一个foreinKey。
我的代码。
public class ApplicationUser : IdentityUser
{
[Required]
public long PersonId { get; set; }
//[Required]
[ForeignKey("PersonId")]
public virtual Person Person { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
人员表(存在于db中)
public class Person
{
[System.ComponentModel.DataAnnotations.KeyAttribute()]
[System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
public long PersonId { get; set; }
public virtual ICollection<ApplicationUser> Users { get; set; }
}
问题:
使用迁移时,我得到以下内容。
up方法:
CreateTable(
"dbo.People",
c => new
{
PersonId = c.Long(nullable: false),
})
.PrimaryKey(t => t.PersonId);
向下方法:
public override void Down()
{
DropForeignKey("dbo.AspNetUsers", "PersonId", "dbo.People");
DropIndex("dbo.AspNetUsers", new[] { "PersonId" });
DropTable("dbo.People");
}
dbo.People来自哪里?我想去db.Person这是一个已经创建的表(通过sql)。
我该如何解决这个问题?
答案 0 :(得分:1)
默认情况下,Entity Framework将实体名称复数化以命名DB表。您可以通过添加以下代码在OnModelCreating
方法中关闭此行为:
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();