【发布时间】:2020-02-20 13:48:17
【问题描述】:
我无法为 Entity Framework Core (v. 2.2.0) 生成迁移
我有一个由“MultipleChoiceQuestion”和“MatchColumns”类继承的“问题”类。我正在尝试使用 Entity Framework Core 构建 TPH(每个层次结构的表)继承。我的基类(Question)有一个属性“QuestionType”来区分子类。 “QuestionType”属性是一个枚举。我不希望 EF 生成鉴别器列,但使用属性“QuestionType”作为鉴别器列。
为了创建正确的迁移,我在 dbcontext 类中使用了以下代码:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Question>(b => b.HasDiscriminator(x => x.QuestionType).HasValue<MultipleChoiceQuestion>(QuestionType.MultipleChoiceQuestion).HasValue<MatchColumns>(QuestionType.MatchColumns));
modelBuilder.Entity<Question>().Property(p => p.QuestionType).HasMaxLength(100).HasColumnName("QuestionType");
}
但是当我运行“添加迁移”时,我收到以下错误:
实体类型“问题”是层次结构的一部分,但没有配置鉴别器值。
无法弄清楚配置代码失败的原因。我查看了 Microsoft 的以下文档: https://docs.microsoft.com/en-us/ef/core/modeling/inheritance#discriminator-configuration
配置不完整/中断的任何指示?
TIA。
【问题讨论】: