NHibernate.LazyInitializationException(NHibernate.

2019-07-30 04:41发布

我们一直有这个问题,弹出偶尔出现,但现在我每次都能重现。 我递增在我定制的论坛,这将导致错误的视图计数器:

NHibernate.LazyInitializationException:无法初始化懒洋洋的集合,没有会话或会话关闭

在对象另一个集合时出现此错误。 如果我补充一下:

.Not.LazyLoad()

要我说流利的映射,误差在我的项目转移。 我一直intil它的对象去一个没有延迟加载现货禁用延迟加载,然后扔了这个错误:

NHibernate.LazyInitializationException:无法初始化代理 - 没有会话。

所以,后来我拿出了穷人对我的懒加载,现在我又回到了起点。 它只有当我增加这种观点计数器错误。 这里是我的基类节省代码的一个片段:

using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
       session.SaveOrUpdate(entity);
       tx.Commit();
}

环顾四周,我在另一篇文章,该交易可能导致的问题看,但那是因为他们被安置在那里。 该代码被扩展到从我的域对象(存储库的类)单独的类。 下面是帖子:

冬眠:LazyInitializationException异常:无法初始化代理

我不相信这是我的问题在这里。 这里是我所引发错误的第一个集合流利的映射。 还有其他一些类似的集合。

HasManyToMany(x => x.Votes)
    .WithTableName("PostVotes")
    .WithParentKeyColumn("PostId")
    .WithChildKeyColumn("VoteId");

Answer 1:

再往研究这个问题,因为它已经自我复制是在单个调用回服务器,如果你做一个保存和获取,您需要刷新了会议。 我做我的冲洗后的保存,并且似乎已经解决了问题。



Answer 2:

检查一下,有没有在会议上加载任何其他对象。 我也曾有过类似的情况发生,我会叫保存的对象,没有任何延迟加载上,它确实给我发了一个循环。 为什么我会得到一个对象不是延迟加载这个错误?

在我的情况,我加载其他几个对象到页面,这些对象没有正确映射。 当我打电话保存NHibernate的会尝试在会话同步,并抛出错误。

尝试删除所有其他NHibernate的,只留下这个计数器更新。 如果不只是柜台发生的错误,你的其他呼叫,直到错误再次慢慢加回。 然后你就可以开始解决真正的罪魁祸首。



文章来源: NHibernate.LazyInitializationException