0

Database休日システム用にかなり単純化したものを作成しています。

エンティティ

Employee

public class Employee
{
  public int Id { get; set;}
  public string Username { get; set; }
  public LineManger Manager { get; set; }
}

LineManger

public class LineManager : Employee
{
  public string CompanySection { get; set; }
}

関係

ご覧のとおり、各従業員には 1 つずつありますがLineMangerEmployeeLineManager.

DbContextは持っています:

public DbSet<Employee> Employees { get; set; }
public DbSet<LineManager> Managers { get; set; }
public DbSet<HolidayConfiguration> Configurations { get; set; }
public DbSet<Holiday> Holidays { get; set; }

PM > Update-Database -verbose初めて実行したとき、テーブルが作成されただけEmployeeで、このテーブルにはCompanySection、テーブルManager_Idがないため、どこにもマップされていませんLineManager

なぜこれが起こったのかについての説明はありますか?これは正しいです?

4

1 に答える 1

1

すべての LineManager は Employee であるため、このようにする必要があります。つまり、Employees をクエリするときは、LineManager も探していることになります。DbSet<Employee> Employeesは 1 つのテーブルにのみ一致するため、EF がテーブルを作成できる唯一の方法は、LineManager からのすべてのフィールドをテーブルに入れることです。

いつか(より多くの継承がある場合)、EFはクラス名を入れる特別な列を作成します。

于 2013-04-15T11:14:14.893 に答える