我将Table-Per-Type层次结构中的这些实体作为我模型的一部分:
// mapped to table "Templates"
public abstract class Template {}
// not mapped, and must not be mapped
public abstract class TextualTemplate : Template {}
// mapped to table "TextTemplates"
public class TextTemplate : TextualTemplate {}
// mapped to table "TextFieldTemplates"
public class TextFieldTemplate : TextualTemplate {}
映射由EntityTypeConfiguration
个后代的数量设置
TextTemplate
和TextFieldTemplate
的映射包含继承自TextualTemplate
的属性的显式映射表达式,因为数据库中的表包含适当的字段,但不包含从Template
继承的属性。< / p>
当我尝试加载Template
时,我收到的错误如下:
无效的列名
无效column_from_TextualTemplate_entity_1
...
列名column_from_TextualTemplate_entity_n
无效 列名Discriminator
我查看了一个查询,该查询被发送到数据库,看起来像EF假定,TextualTemplate
被映射,或者它试图在{{1}中找到这些列} table。
我知道,我可以丢弃Templates
类,并分别在TextualTemplate
和TextTemplate
中复制属性,但这正是我试图避免的。
有没有办法告诉EF,这些列应该在表中找到继承类型?