私はコード ファーストのアプローチを使用しており、EF がテーブルを作成する方法の動作を変更しようとしています。2 つの単純なクラスがあります。
注: 毎回データベースを削除して再作成しています。これは現実の世界では起こりませんが、テストのために、作成を傍受し、EF に思い描いた方法でデータベースを作成させようとしています。
public class Person
{
public int PersonId { get; private set; }
public string Forename { get; set; }
}
public class Officer : Person
{
public int OfficerId { get; private set; }
public bool IsManager { get; set; }
}
私の OnModelCreating() イベントには、次のものがあります。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Person>().HasKey(x => x.PersonId);
modelBuilder.Entity<Person>().ToTable("Person");
modelBuilder.Entity<Officer>().HasKey<int>(x => x.OfficerId);
modelBuilder.Entity<Officer>().ToTable("Officer");
}
問題は、データベースが作成されると、テーブルが次のように作成されることです。
表: Person PersonId INT PK Forename nvarchar(50)
表: Officer PersonId INT PK、FK IsManager BIT OfficerId INT
私には、これは従来の命名規則、つまり TableNameId に従っていないため、間違っているように見えます。
これに関するヘルプは大歓迎です。前もってありがとう、オナム。