【发布时间】:2020-02-03 15:38:43
【问题描述】:
运行 add-migration (EF core 3.1.1) 时抛出异常:
CLR 属性“DiscriminatorLevel2Id”不能添加到实体类型“CustomerBase”,因为它是在 CLR 类型“InternalCustomer”上声明的
下图显示了所需的层次结构(简要):
映射如下:
// Discriminator (Level 1)
modelBuilder.Entity<CustomerBase>()
.HasDiscriminator(b => b.CustomerTypeId)
.HasValue<InternalCustomer>((int)CustomerType.Internal)
.HasValue<ExternalCustomer>((int)CustomerType.External);
// Discriminator (Level 2)
modelBuilder.Entity<InternalCustomer>()
.HasDiscriminator(b => b.DiscriminatorLevel2Id)
.HasValue<VIPCustomer>((int)DiscriminatorLevel2.VIP)
.HasValue<RegularCustomer>((int)DiscriminatorLevel2.Regular);
Entity Framework Core 3.1.1 是否支持“多级继承 TPH”?
【问题讨论】:
-
多级鉴别器 - 没有。具有共同鉴别器的多级继承 - 是的。
-
感谢Ivan Stove,“多级继承与共同鉴别器”是如何实现的,上面的例子中需要做哪些改变?
标签: c# entity-framework-core table-per-hierarchy