实体框架导航属性 - 创建重复项

时间:2014-03-11 19:42:28

标签: c# entity-framework

这是我的简化域名模型:

public abstract class AbstractClass
{
    public string Name {get;set;}
     public abstract IEnumerable<AbstractClass> Children { get; }
}

public abstract class Project : AbstractClass
{
    List<Document> Documents {get;set;}
    public override IEnumerable<AbstractClass> Children
    {
        get { return this.Documents; }
    }
}

public abstract class Document : AbstractClass
{
    //misc
}

我最近在Project类中添加了上面的抽象“Children”属性和关联的覆盖。这样做是因为我需要引用“Children”以用于用户界面(继承自AbstractClass的其他类也将具有Children导航属性)。

问题在于,现在,当我检索项目/文档的图形时,重复的文档显示在对象图中。我认为我需要某种克隆方法,但速度很重要,我只是想引用现有的文档导航属性而不是克隆对象。

我认为这有一个简单的解决方案,但它逃脱了我。

感谢。

编辑:

为清楚起见,我正在通过Web Api从SQL数据库中检索数据,并且在Web Api将结果消息发送回客户端后会出现问题。所以看起来儿童财产可能会在反序列化阶段引起问题。

1 个答案:

答案 0 :(得分:0)

对于那些可能来到这个页面的人,我通过使用抽象方法与AbstractClass中的属性解决了这个问题,即

public abstract IEnumerable<AbstractClass> GetKeyChildren();

我仍然不清楚为何发生重复。