Я работаю над старым приложением, использующим nhibernate 4.4.0400 для подключения к oracle DB.
Команда сохранения обновления выглядит следующим образом:
CallContext.Session.Save(obj); // Save or update the data record on database
transaction.Commit();
obj.MutCounter++;
Транзакция создается следующим образом:
using (ITransaction transaction = CallContext.Session.BeginTransaction())
{...
Редактировать: вызов метода определяется следующим образом:
public static void SaveOrUpdate(T obj)
{
if (obj == null)
throw new ArgumentNullException("obj");
Сессия определяется следующим образом:
public static ISession Session
{
get
{
if (HttpContext.Current == null)
throw new MissingHttpContextException();
if (HttpContext.Current.Items[HttpContextItemEnum.Session] == null)
HttpContext.Current.Items[HttpContextItemEnum.Session] = NHibernateHelper.OpenSession();
return HttpContext.Current.Items[HttpContextItemEnum.Session] as ISession;
}
set
{
if (HttpContext.Current == null)
throw new MissingHttpContextException();
HttpContext.Current.Items[HttpContextItemEnum.Session] = value;
}
}
При первом вызове (нажмите кнопку сохранения в первый раз в пользовательском интерфейсе) я получаю следующее исключение:
УникальныйОграничение (...) verletzt
Не удалось синхронизировать состояние базы данных с сеансом
Но если я щелкну второй раз сразу после (несколько секунд), данные будут правильно сохранены вDB.
Я не знаю, что не так, почему у меня такое поведение, что я должен изменить, чтобы получить стабильное поведение
У вас есть идеи, что проверить?Что поменять?Почему это происходит так?