我们一直偶尔会出现这个问题,但现在我每次都可以重现它。我正在增加自定义论坛上的查看计数器,这会导致错误:
NHibernate.LazyInitializationException:未能延迟初始化集合,没有会话或会话被关闭
此错误发生在对象中的另一个集合上。如果我添加:
.Not.LazyLoad()
对于我的 Fluent 映射,错误围绕我的项目转移。我一直禁用对象上的延迟加载,直到它到达没有延迟加载的位置,然后抛出此错误:
NHibernate.LazyInitializationException:无法初始化代理 - 无会话。
所以,然后我把懒惰装载上的结拿出来,现在我回到了第一个方向。仅当我增加此视图计数器时才会出错。这是我的基类保存代码的片段:
using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
session.SaveOrUpdate(entity);
tx.Commit();
}
环顾四周,我在另一篇文章中读到,交易可能会导致问题,但这是因为它们的放置位置。此代码扩展到与我的域对象(存储库类)分开的类。这是帖子:
hibernate:LazyInitializationException:无法初始化代理 https://stackoverflow.com/questions/345705/hibernate-lazyinitializationexception-could-not-initialize-proxy
我不认为这是我的问题。这是我对第一个引发错误的集合的流畅映射。还有其他几个类似的集合。
HasManyToMany(x => x.Votes)
.WithTableName("PostVotes")
.WithParentKeyColumn("PostId")
.WithChildKeyColumn("VoteId");
对这个问题的进一步研究是,在对服务器的一次回调中,如果您执行保存和获取操作,则需要刷新会话。我在保存后进行了刷新,这似乎已经解决了问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)