更新:我已经解决了这个问题
我有下面这段代码,应该最终更新一条记录
if (session.Contains(entity))
{
session.Evict(entity);
}
当使用Session.Evict(entity)时会出现KeyNotFoundException错误,错误信息如下:
给定的键在字典中不存在。
我是否理解有误?如果session.Contains(entity)为true,则应存在该键,因此session.Evict()应按预期工作吗?
堆栈跟踪如下:
System.Collections.Generic.KeyNotFoundException : The given key was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at NHibernate.Engine.StatefulPersistenceContext.RemoveEntity(EntityKey key)
at NHibernate.Event.Default.DefaultEvictEventListener.OnEvict(EvictEvent event)
at NHibernate.Impl.SessionImpl.FireEvict(EvictEvent evictEvent)
at NHibernate.Impl.SessionImpl.Evict(Object obj)
at Core.Repository.NHibernate.Repository.NoIdRepository`1.Update(T entity) in NoIdRepository.cs: line 26
at Core.Tests.Repository.NHibernate.Repository.TestInstanceVersionRepository.Test_Saving_Data() in TestInstanceVersionRepository.cs: line 63