Обновление: я исправил эту проблему
У меня есть следующий блок кода, который должен в конечном итоге обновить запись
if (session.Contains(entity))
{
session.Evict(entity);
}
какие ошибки в Session.Evict(entity) с KeyNotFoundException и следующее сообщение:
Указанный ключ отсутствует в словаре.
Я что-то не понимаю? Я предполагаю, что если session.Contains(entity) истинно, тогда ключ должен существовать и, следовательно, 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