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