NHibernate:由于延迟加载问题导致"flush()"没有处理"集合"

And*_*ock 10 nhibernate

我有两节课:

class Parent
{
    public virtual Child Child { get; set; }
}

class Child 
{
    public virtual IList<GrandChild> GrandChildren { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个Parent从我加载的实例ISession,Parent.Child是延迟加载的(此时未加载).Child.GrandChildren也很懒.

如果我这样做:

session.Save(new Parent { Child = existingParent.Child } );
Run Code Online (Sandbox Code Playgroud)

我明白了 collection [Child.GrandChildren] was not processed by flush()

如果我引起existingParentChild被加载性能,只需通过访问:

var x = existingParent.Child.Name
Run Code Online (Sandbox Code Playgroud)

问题消失了.为什么会发生这种情况,我该如何解决它 - 最好不必改变我的提取策略?

**编辑:**父母对孩子有FK

我正在使用NH 2.1.2.4000

谢谢

Jam*_*Ide 0

从 Child 集合到 GrandChildren 集合的级联更改的级联设置是什么?我认为如果集合是脏的但级联设置不会导致更改被持久化,NHibernate 会抛出此异常。