0

私はforeinキーリレーションシップ(one - to ---- many)を作成しようとしていますコードの最初の移行でテーブル名が変更されるのはなぜですか?

そして、既存のpersonテーブルの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.DatabaseGe‌​nerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGen‌​eratedOption.None)] 
    public long PersonId { get; set; } 

    public virtual ICollection<ApplicationUser> Users { get; set; } 
} 

問題

私は次のことを得る移行を使用している場合。

アップ方法:

 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経由)に行くと仮定します。

どうすればこの問題を解決できますか?

答えて

1

デフォルトでは、Entity Frameworkはエンティティ名を複数化してDBテーブルの名前を付けます。あなたは、次のコードを追加してOnModelCreating方法では、この動作をオフに切り替えることができます。

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
+0

@Alexey Andrushkevichありがとう – ThunD3eR

関連する問題