繁体   English   中英

将鉴别器列映射到类 Property Entity Framework Core 2.2.0

[英]Map Discriminator Column to class Property Entity Framework Core 2.2.0

我无法为 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");
}

但是当我运行“Add-Migration”时,出现以下错误:

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

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

任何指示为什么配置不完整/破坏?

TIA。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM