将鉴别器列映射到类属性实体框架核心2.2.0



我无法为实体框架核心(2.2.0版(生成迁移

我有一个类"问题",它继承了类"多选项问题"&"MatchColumns"。我正在尝试使用实体框架核心构建一个TPH(每层次表(继承。我的基类(Question(有一个属性"QuestionType"来区分子类。"QuestionType"属性是一个枚举。我不希望EF生成Discriminator列,而是使用属性"QuestionType"作为Discriminater列。

为了创建正确的迁移,我在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");
}

但是当我运行"添加迁移"时,我会得到以下错误:

实体类型"Question"是层次结构的一部分,但没有配置鉴别器值。

无法弄清楚配置代码失败的原因。我查看了Microsoft的以下文档:https://learn.microsoft.com/en-us/ef/core/modeling/inheritance#discriminator-配置

为什么配置不完整/中断?

TIA。

任一Question都应该是抽象的。或者它应该是一种可能的记录类型,带有鉴别器值。

最新更新