实体框架可以忽略我在实体中实现接口的事实吗?情况是我有一个实现IModelObject接口的Tag类,它定义了实现它的每个类都需要具有Id属性。课程如下:
public class Tag : IModelObject, IEquatable<Tag>
{
[ScaffoldColumn(false)]
public virtual int Id
{
get;
set;
}
[Required]
public virtual string Name
{
get;
set;
}...
}
我的域模型中的每个实体都实现了IModelObject。没有基类,只有一个接口。默认映射有效,但在数据库中添加了Discriminator列。这个鉴别器不属于我的域模型,所以我不需要它在我的数据库中。
实现接口不是继承,我也在实现IEquatable接口。那么为什么Entity Framework这样的行为是继承并添加了Discriminator列,如何通过不使用基类或抽象类来避免这种情况呢?
答案 0 :(得分:1)
我对你的推理感到有些困惑。继承与你的问题无关。您的问题是您的实体包含属性(以及虚拟属性.EF对虚拟属性执行特殊操作)。 EF将为您实体的每个公共财产创建一个列。我不确定为什么你认为它不应该,因为它就是它的作用。
如果您希望EF忽略某个属性,那么您可以使用该属性上的[NotMapped]
属性,EF将忽略该属性。