0

实体框架可以忽略我在实体中实现接口的事实吗?情况是我有一个实现 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。没有基类,只有一个接口。默认映射有效,但在数据库中添加了鉴别器列。而且这个鉴别器不是我的域模型的一部分,所以我的数据库中不需要它。
实现一个接口不是继承,我也在实现一个 IEquatable 接口。那么为什么实体框架的行为就像继承并添加了鉴别器列,我怎样才能通过不使用基类或抽象类来避免这种情况呢?

4

1 回答 1

1

我对你的推理有点困惑。继承与你的问题无关。您的问题是您的实体包含属性(以及虚拟属性。EF 使用虚拟属性执行特殊操作)。EF 将为您实体上的每个公共属性创建一个列。我不确定你为什么认为它不应该,因为它就是这样做的。

如果您希望 EF 忽略某个属性,那么您可以使用该[NotMapped]属性上的属性,EF 将忽略它。

于 2012-09-19T22:30:26.497 回答