首先,这些问题类似,但绝对不一样:
Can I mix Table per Hierarchy and Table per Type in Entity Framework? - 指的是另一种情况。
Entity Framework: mix table per type and table per hierarchy - 另一种情况是,尽管接受对第一种情况的回答与它无关(*)。
(*)其次,当使用table-per-entity和带有表的鉴别符的表映射基本实体时,我在Entity Framework中成功地混合了每个类型的表和每个层次的表 - 每个层次结构都在链条下方。
我正在尝试映射以下内容:
表:
BaseTable
{
int PK1;
int PK2;
string? Value1;
double? Value2;
}
ChildTable3
{
int PK1;
int PK2;
int Value;
}
实体:
abstract BaseEntity : class // Maps to BaseTable
{
int PK1; // Maps to PK1 in relevant table
int PK2; // Maps to PK2 in relevant table
}
Entity1 : BaseEntity // Maps to BaseTable when Value1 != null
{
string Value; // Maps to Value1
}
Entity2 : BaseEntity // Maps to BaseTable when Value1 == null && Value2 != null
{
double Value; // Maps to value2
}
Entity3 : BaseEntity // Maps to ChildTable3
{
int Value; // Maps to value
}
在添加Entity3映射之前。
添加Entity3及其映射后,我在编译时收到以下错误:
错误1错误3026:从第980,986,995行开始映射片段时出现问题:表BaseTable中可能出现数据丢失或键约束违规。 具有密钥(PK)的实体在以下情况下不会往返: (PK在'BaseTables'实体集中,实体是类型[MyNamespace.Entity3]) Path \ To \ My.edmx 981 15 MyAssembly
答案 0 :(得分:5)
我找到了一个工作流程,可以通过设计师执行这样的映射:
稍后添加其他子表: