0

我是 db4o 的新手,我正在尝试弄清楚是否可以执行以下操作:

public class Page
{ 
    public Guid ID {get;set;}
    public Page Parent {get;set;}
    public IList<Page> Children {get;set;}
    public String Name {get;set;}
    public String Depth {get;set;}
}

当我保存页面时,我只有它的父级。IE

Page p1 = new Page() { 
    ID = Guid.NewGuid(),
    Name = "p1",
    Parent = null
};
Page p2 = new Page() { 
    ID = Guid.NewGuid(),
    Name = "p2",
    Parent = p1
};
Page p3 = new Page() { 
    ID = Guid.NewGuid(),
    Name = "p3",
    Parent = p1
};

当我加载 p1 时,无论如何都要填充两个孩子?

4

3 回答 3

1

好吧,最简单的方法实际上就是使用属性调用来连接。像这样:

public class Page
{ 
    private Page _parent;
    public Page Parent {
        get{return _parent;}
        set{
            value.Children.Add(this);
            this._parent = value;
        }
    }
    public IList<Page> Children {get;set;}

    // omitted the the other properties
}

将 Page-instance 分配给 Page.Parent 后,Page 就在 Page.Children-property 中。

这是一个解决方案吗?

于 2010-02-03T22:14:21.397 回答
1

一旦您从数据存储中加载 p1,Db4O 也会加载孩子的集合,所以是的,有可能......

于 2010-02-07T14:25:20.517 回答
0

不确定 DB4O,但您应该考虑为此使用 IComposite模式

于 2010-02-07T14:14:42.420 回答