C# NHibernate.LazyInitializationException异常

C# NHibernate.LazyInitializationException异常,c#,asp.net-mvc,nhibernate,fluent-nhibernate,lazy-loading,C#,Asp.net Mvc,Nhibernate,Fluent Nhibernate,Lazy Loading,我们一直有这个问题偶尔出现,但现在我每次都可以复制它。我正在增加自定义论坛上的视图计数器,这会导致错误: NHibernate.LazyInitializationException:未能延迟初始化集合,未关闭任何会话或会话 此错误发生在对象中的另一个集合上。如果我加上: .Not.LazyLoad() 对于我的流畅映射,错误会围绕我的项目转移。我一直禁用对象的延迟加载,直到它到达一个没有延迟加载的位置,然后它抛出以下错误: NHibernate.LazyInitializationExcept

我们一直有这个问题偶尔出现,但现在我每次都可以复制它。我正在增加自定义论坛上的视图计数器,这会导致错误:

NHibernate.LazyInitializationException:未能延迟初始化集合,未关闭任何会话或会话

此错误发生在对象中的另一个集合上。如果我加上:

.Not.LazyLoad()

对于我的流畅映射,错误会围绕我的项目转移。我一直禁用对象的延迟加载,直到它到达一个没有延迟加载的位置,然后它抛出以下错误:

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

所以,然后我在我的懒惰加载上去掉了NOT,现在我又回到了原点。它只在我递增此视图计数器时出错。下面是我的基类保存代码片段:

using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
       session.SaveOrUpdate(entity);
       tx.Commit();
}
环顾四周,我在另一篇文章中读到,这些事务可能会导致问题,但这是因为它们的位置。此代码扩展到与我的域对象(存储库类)分离的类。以下是帖子:

我不认为这是我的问题。这是我的第一个抛出错误的集合的fluent映射。还有其他几个类似的收藏

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

检查该会话中是否没有加载任何其他对象。我曾经遇到过类似的情况,在这种情况下,我会对一个没有任何延迟加载的对象调用Save,它真的让我产生了一个循环。为什么在一个不是延迟加载的对象上会出现这个错误

在我的情况下,我将其他几个对象加载到页面中,这些对象没有正确映射。当我调用Save时,NHibernate会尝试在会话中同步并抛出错误


尝试删除所有其他NHibernate,只保留此计数器更新。如果只有计数器没有发生错误,请缓慢添加其他调用,直到错误返回。然后,您就可以着手解决真正的问题了。

对这个问题的进一步研究表明,在对服务器的一次回调中,如果您执行了save-and-get,您需要刷新会话。我在保存后刷新,这似乎已经纠正了问题。

我尝试了您的建议,当我尝试迭代其中一个集合时,页面代码中出现了错误。没有延迟加载,但仍然出错。如果我删除计数器增量,页面工作正常。我的问题与此类似。