让我们说:
public class Parent
{
public virtual IList<Child> Childs { get; set; }
public void AddChild(long childId)
{
// Link existing child to parent.
}
}
我正在尝试使用NHibernate实现DDD,所以我想知道如何将子项链接到父项而不从数据库中检索它。
答案 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集合将导致子级加载。