C# NHibernate无法将数据库状态与会话同步

C# NHibernate无法将数据库状态与会话同步,c#,nhibernate,concurrency,optimistic-locking,C#,Nhibernate,Concurrency,Optimistic Locking,我检查了NHibernate的日志文件,发现了随机错误,如下所示: NHibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [MaltaIndependent.Modules._AutoGen.MemberImpl#353796206] at NHibernate.Persister.En

我检查了NHibernate的日志文件,发现了随机错误,如下所示:

NHibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [MaltaIndependent.Modules._AutoGen.MemberImpl#353796206]
   at NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id, Object[] fields, Object[] oldFields, Object rowId, Boolean[] includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo sql, ISessionImplementor session) in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:line 2821
   at NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert(Object id, Object[] fields, Object[] oldFields, Object rowId, Boolean[] includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo sql, ISessionImplementor session) in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:line 2702
   at NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id, Object[] fields, Int32[] dirtyFields, Boolean hasDirtyCollection, Object[] oldFields, Object oldVersion, Object obj, Object rowId, ISessionImplementor session) in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:line 3007
   at NHibernate.Action.EntityUpdateAction.Execute() in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Action\EntityUpdateAction.cs:line 79
   at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Engine\ActionQueue.cs:line 136
   at NHibernate.Engine.ActionQueue.ExecuteActions(IList list) in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Engine\ActionQueue.cs:line 125
   at NHibernate.Engine.ActionQueue.ExecuteActions() in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Engine\ActionQueue.cs:line 171
   at NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource session) in c:\Repository\Work\CodeBase\C#\+OpenSource\nHibernate\nhibernate-core-master-v3.3.1\src\NHibernate\Event\Default\AbstractFlushingEventListener.cs:line 241

关于这个问题,我知道这是由于乐观并发而发生的,并且“预期”会发生。我的主要问题是堆栈跟踪—它没有说明发生的“位置”,而是从行
NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecution开始。我试着下载NHibernate源代码并查看了一下,但是对于为什么没有显示完整的堆栈跟踪,我没有太多的理解。我还有其他类似错误的堆栈跟踪,这些错误将我带到
Transaction.Commit()
行。你知道我如何找到哪段代码实际上抛出了错误吗?

我也遇到了同样的问题,结果是我在映射字段上设置了LazyLoad(不是引用,也不是很多)

NH应提供导致错误的对象

希望你能尽快解决这个问题