gpt4 book ai didi

NHibernate: "collection was not processed by flush()"延迟加载问题导致

转载 作者:行者123 更新时间:2023-12-03 12:28:21 26 4
gpt4 key购买 nike

我有两个类(class):

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

class Child
{
public virtual IList<GrandChild> GrandChildren { get; set; }
}

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

如果我这样做:
session.Save(new Parent { Child = existingParent.Child } );

我收到 collection [Child.GrandChildren] was not processed by flush()
如果我造成 existingParentChild要加载的属性,只需访问它:
var x = existingParent.Child.Name

问题就解决了。为什么会发生这种情况,我该如何解决 - 最好不必更改我的获取策略?

**编辑:** parent 对 child 有 FK

我正在使用 NH 2.1.2.4000

谢谢

最佳答案

我遇到了类似的问题,@Jamie Ide 的评论帮助我意识到了问题所在。我在构造函数中初始化集合,这让 NHibernate 认为集合是脏的,即使当时不需要保存该特定对象。

我得到的异常(exception)是:
类名:错误 | NHibernate.AssertionFailure:flush() 未处理集合 [CollectionName]

我仍然想做这个初始化,但我想我必须找到一些其他的解决方案来解决这个问题。

关于NHibernate: "collection was not processed by flush()"延迟加载问题导致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com