C# 已修改NHibernate异常枚举数
我有一个带有ThreadStaticSessionContext的多线程NHibernate应用程序。 我为每个线程绑定一个新会话。在退出线程之前,我提交事务并获得C# 已修改NHibernate异常枚举数,c#,nhibernate,C#,Nhibernate,我有一个带有ThreadStaticSessionContext的多线程NHibernate应用程序。 我为每个线程绑定一个新会话。在退出线程之前,我提交事务并获得 enumerator was modified at NHibernate.Util.SequencedHashMap.OrderedEnumerator.MoveNext() at NHibernate.Util.IdentityMap.get_EntryList() at NHibernate.Util.I
enumerator was modified
at NHibernate.Util.SequencedHashMap.OrderedEnumerator.MoveNext()
at NHibernate.Util.IdentityMap.get_EntryList()
at NHibernate.Util.IdentityMap.ConcurrentEntries(IDictionary map)
at NHibernate.Event.Default.AbstractFlushingEventListener.PrepareEntityFlushes(IEventSource session)
at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
at NHibernate.Impl.SessionImpl.Flush()
at NHibernate.Transaction.AdoTransaction.Commit()
at ...
我没有任何线索…在枚举集合时从集合中添加/删除时通常会引发此异常(如在
foreach
语句中)。代码在try{Transaction.Commit();Session.Close();return true;}catch中失败(异常ex){//log ex Console.WriteLine(ex);Console.ReadKey();if(Transaction!=null)Transaction.Rollback();if(Session!=null)Session.Clear();return false;}在Transaction.Commit()中,在Commit期间,集合似乎正在被另一个线程修改