我在使用带有 Code First 的 EF 4.3 的 TPT 时遇到问题。我有以下课程:
public class Section
{
public int Id { get; set; }
....
public int SurveyId { get; set; }
public virtual Survey Survey { get; set; }
}
public class IntroductionSection : Section
{
public string ExampleText { get; set; }
}
public class QuestionSection : Section
{
public int ExampleNumber { get; set; }
}
使用 Fluent API 映射如下:
modelBuilder.Entity<Section>().Map(m => m.ToTable("Section"));
modelBuilder.Entity<Section>().HasRequired(m => m.Survey).WithMany(s => s.Sections).HasForeignKey(t => t.SurveyId);
modelBuilder.Entity<IntroductionSection>().Map(m => m.ToTable("Introduction"));
modelBuilder.Entity<QuestionSection>().Map(m => m.ToTable("Question"));
一切似乎都运行良好,并且创建了三个表并填充了我在播种时期望的数据 - 唯一的问题是我仍然会像使用 TPH 一样在“Section”表中生成一个“Discriminator”字段。任何想法为什么会这样以及我如何摆脱它?
我尝试使用简单的 Animal/Cat/Dog 类型类来复制该问题,并且(令人讨厌)工作正常!