TPHのEFコードファーストで問題が発生しています。モデルにないテーブルに2つの追加の列があります。
私は次のようなクラス構造を持っています:
public class TestBase
{
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey("TestMaster")]
public string TestMaster_Id { get; set; }
public TestMaster TestMaster { get; set; }
}
public class TestInherit1 : TestBase
{
public string Val1 { get; set; }
}
public class TestInherit2 : TestBase
{
public string val2 { get; set; }
}
public class TestMaster
{
[Key]
public string Id { get; set; }
public virtual ICollection<TestInherit1> Inherit1List { get; set; }
public virtual ICollection<TestInherit2> Inherit2List { get; set; }
}
DBContextには、次のものがあります。
public DbSet<TestMaster> TestMaster
{
get;
set;
}
public DbSet<TestBase> TestBase
{
get;
set;
}
[NotMapped]
public DbSet<TestInherit1> TestInherit1
{
get;
set;
}
[NotMapped]
public DbSet<TestInherit2> TestInherit2
{
get;
set;
}
EFで生成されたテーブルの構造は次のとおりです。
[TestBases]
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL,
[TestMaster_Id] [nvarchar](128) NULL,
[Val1] [nvarchar](max) NULL,
[val2] [nvarchar](max) NULL,
[Discriminator] [nvarchar](128) NOT NULL,
[TestMaster_Id1] [nvarchar](128) NULL,
[TestMaster_Id2] [nvarchar](128) NULL
[TestMasters](
[Id] [nvarchar](128) NOT NULL
TestBasesテーブルを見ると、クラスで定義されていない2つの追加の列TestMaster_id1とTestMaster_Id2が生成されています。EFはこれらの2つの列を挿入しています。TestMaster_Id列に外部キーがすでに定義されています。私は何が間違っているのですか?これらの2つの列は必要ありません。