按ID添加列表项

时间:2013-04-06 11:34:32

标签: nhibernate nhibernate-3

让我们说:

public class Parent
{
    public virtual IList<Child> Childs { get; set; }

    public void AddChild(long childId)
    {
        // Link existing child to parent.
    }
}

我正在尝试使用NHibernate实现DDD,所以我想知道如何将子项链接到父项而不从数据库中检索它。

1 个答案:

答案 0 :(得分:0)

你做不到。面向对象的方法是:

public class Parent
{
    public virtual IList<Child> Childs { get; set; }

    public void AddChild(Child child)
    {
        child.Parent = this;
        Childs.Add(child);
    }
}

调用此方法的代码可以添加子项而不使用ISession.Load检索它:

var child = session.Load<Child>(childId);
parent.AddChild(child);

Load将创建一个ID设置的动态代理。请注意,如果访问其他任何属性,将加载子级,并且访问父级的Childs集合将导致子级加载。