Nibernate непонятное поведение - PullRequest
0 голосов
/ 20 ноября 2018

Я работаю над старым приложением, использующим 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.

Я не знаю, что не так, почему у меня такое поведение, что я должен изменить, чтобы получить стабильное поведение

У вас есть идеи, что проверить?Что поменять?Почему это происходит так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...