【发布时间】:2022-01-18 13:30:33
【问题描述】:
我有两个班级SomeClass 和SomeDerivedClass:
public abstract class SomeClass
{
int Id { get; set; }
public string BaseField { get; set; }
}
public class SomeOtherClass : SomeClass
{
public string SomeField { get; set; }
}
但是,无论我尝试什么,Entity Framework 都会尝试对数据库中的层次结构进行建模。我根本不想在架构中考虑 SomeClass,我只希望 SomeOtherClass 作为自己完全独立的实体。
我想要一个名为 SomeOtherClass 的表,其中包含 Id、BaseField 和 SomeField 列。但是,Entity Framework 总是尝试创建一个名为 SomeClass 的表,其中包含一个鉴别器列,或者每个表一个表。
我尝试过的事情清单:
- 为
OnModelCreating中的两个实体调用.ToTable("SomeOtherClass")。仍然添加了一个鉴别器列。尝试添加HasNoDiscriminator(),但随后出现错误
层次结构中没有鉴别器的所有实体类型必须映射到不同的表`
- 在
SomeClass上调用.ToView(null),在SomeOtherClass上调用.ToTable("SomeOtherClass")。在这种情况下,表会丢失基列 (BaseField) - 在两者上都调用
.HasBaseType<SomeClass>.HasBaseType<SomeOtherClass >,但随后我收到关于无效层次结构的错误。 - 制作基类
abstract似乎没有效果。
如何在实体框架中继承一个类而不尝试在架构中创建层次结构?
【问题讨论】:
标签: entity-framework-core ef-core-6.0