我有抽象基类,我们称之为A
A
然后是混凝土类型B和C
B在数据库中有一个Type列 但是C没有,因为它只能是一种类型,C具体类会覆盖这个属性,如
public override Types Type
{
get { return Types.Foo; }
set { }
}
我忽略了C配置中的Type属性,如
public class CConfiguration : EntityTypeConfiguration<C>
{
public CConfiguration()
{
HasKey(t => t.Code);
Map(l => l.MapInheritedProperties());
...
Ignore(r => r.Type);
ToTable("C");
}
}
这会产生错误
其他信息:您不能在属性上使用Ignore方法 &#39;类型&#39;在类型&#39; C&#39;因为 此类型继承自该类型 &#39; A&#39;这个属性的位置 映射。要从模型中排除此属性,请使用 基类型上的NotMappedAttribute或Ignore方法。
如果我在基类上忽略它而不是
其他信息:该物业&#39; Type&#39;不是声明的财产 在类型&#39; B&#39;。验证该属性尚未明确 通过使用Ignore方法或从模型中排除 NotMappedAttribute数据注释。确保它是有效的 原始财产。
向C&#39的Type属性添加NotMappedAttribute
什么都不做,我不想使用流动映射旨在删除的attrobutes
编辑:一个丑陋的解决方案是创建一个映射到数据库的内部属性,然后使用一个被忽略的公共属性。 B类的覆盖仅指向内部的