我有一个对象的结构是这样的:如何在循环引用的层次结构中加载实例?
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;}
}
的关系包含了父母和孩子实例的所有信息,我想和大家分享父同关系实例和所有子实例组成关系。
现在,当我来了,从我开始与顶级实体,然后加载的关系数据库载入我的实体。我认为我可以缓存我正在构建的关系,并为孩子重复使用相同的实例。但是这不起作用,因为我需要加载所有子实体,所以每个子实体都试图重新创建相同的关系,我目前正在尝试在创建子对象之前先获取它们,所以我最终创建了所有的子实体在我可以将关系添加到缓存之前,树中我下面的关系实例的关系。
有没有一种方法可以让我避开这个问题,而不使我的子女关系的设置属性,因此要创建的孩子之前,我可以创建参考的关系?
为什么你需要的关系是在父类和儿童名单是在关系类的列表?不应该有一份清单足以与许多儿童建立关系吗?难道你不能让Relationship或Chilredn成为一个单独的参考,只能将其中的一个作为列表吗?这不能回答你的问题,但会帮助我理解它。 – BlueMonkMN 2011-04-14 11:20:51
实际上一个实体有一个类型,每个关系是实体和特定类型的其他实体之间的关系。我简化了问题 – 2011-04-14 11:23:47
您可以在创建实体时使用“幽灵”关系吗?然后你用真实的东西“修复”关系。不知道这是否有道理。此外,这也可能对您的缓存有效。 – tzup 2011-04-14 11:53:01