1

我有一个像这样的对象结构:

public class Entity
{
    IList<Relationship> Relationships{get;set;}
}

public class Relationship
{
    public Relationship(Entity parent, IList<Entity> children)
    {
    //set properties
    }
    Entity Parent{get;private set;}
    IList<Entity> Children{get;private set;}
}

关系包含有关父实例和子实例的所有信息,我想在父实例和构成关系的所有子实例上共享相同的关系实例。

现在,当我从数据库加载我的实体时,我从顶部实体开始,然后加载关系。我想我可以缓存我正在建立的关系并为孩子们重用相同的实例。但这不适用于创建我需要加载所有子实体的关系,因此每个子实体都尝试重新创建我当前试图在创建之前获取子实体的相同关系,所以我最终创建了所有在我可以将关系添加到缓存之前,树中我下面的关系实例。

有没有办法在不使孩子成为我的关系的可设置属性的情况下解决这个问题,所以我可以在创建孩子之前创建对关系的引用?

4

1 回答 1

0

所以我通过引入一个关系构建器类来管理这个,我用来跟踪关系的父母和孩子,而不是实际创建它。

这使我能够加载一个实体并在构建器中创建它的关系,当关系尝试创建他们与构建器检查以查看关系已经被创建并返回的孩子时。

这意味着我可以在层次结构中一直向下导航,加载所有实体实例并设置与关系关联的父实体和子实体。一旦加载了所有实体并且递归完成并且我们返回到开始加载实体的入口点,我要求关系构建器解决所有关系。然后,这将创建它已被告知的每个关系,并在该关系中涉及的父实例和子实例上设置关系实例。

于 2011-04-20T07:31:26.213 回答