如何防止父类属性的属性应用于子级中的该属性?

时间:2016-05-10 21:15:13

标签: c# entity-framework

我有一个父类ListableEntity,其Description属性使用属性[DbUnique],该属性在SQL表中对此字段设置唯一约束。

public abstract partial class ParentEntity<T> {

    [DbUnique]
    public string Description { get; protected set; }
}

我需要创建一个ListableEntity的子类,与父类不同,它允许Description属性具有重复值。但即使我在子类中隐藏父属性,仍然会以某种方式应用此DbUnique属性,从而防止重复描述。以下是我对儿童班的相关摘录:

public class ChildEntity : ParentEntity<ChildEntity>
{
    public new string Description { get; private set; }
}

我对C#很新。我的理解是这个孩子的描述属性会覆盖ChildEntity对象的父级,但是当我尝试使用重复描述保存ChildEntities时,我仍然得到异常,&#34;无法插入具有唯一索引的重复键行&#39; IX_Description&#39;。&#34;有谁知道为什么来自父属性的这个属性仍然被应用,以及我如何防止这种情况?谢谢。

1 个答案:

答案 0 :(得分:0)

你可以做两件事,一件是更改属性名称,例如ParentDescription和ChildDescription(我认为这是最好的选择)。另一个是将另一个类的属性“Description”作为“abstract”,因此在子类中,您必须覆盖这些属性。

GrandParent - &gt; ParentEntity - &gt; ChildEntity