Как сохранить, а затем обновить один и тот же экземпляр класса во время одного запроса с помощью NHibernate? - PullRequest
0 голосов
/ 08 июля 2011

Я относительно новичок в NHibernate, и у меня есть вопрос по этому поводу.Я использую этот фрагмент кода в своем проекте MVC в методе Controller:

MyClass entity = new MyClass 
                    {
                        Foo = "bar"
                    };

_myRepository.Save(entity);

....

entity.Foo = "bar2";
_myRepository.Save(entity);

Первый раз, когда объект успешно сохранен в базе данных.Но второй раз ни один запрос не попадает в базу данных.Мой метод сохранения в репозитории просто делает:

public void Save(T entity)
{
  _session.SaveOrUpdate(entity);
}

Что я должен сделать, чтобы иметь возможность сохранить и затем обновить эту сущность во время одного запроса?Если я добавлю _session.Flush(); после сохранения объекта в базу данных, он будет работать, но я не уверен, что это правильно.

Спасибо

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Это ожидаемое поведение.

  • Изменения сохраняются только на Flush
  • Flush может вызываться явно или неявно (см. 9.6. Flush )
  • При использовании генератора identity (не рекомендуется) вставки отправляются немедленно, поскольку это единственный способ вернуть идентификатор.
2 голосов
/ 08 июля 2011

вы должны использовать транзакции.
пара хороших источников: здесь и здесь .
также, лето nHibernate какЯ впервые начал с nHibernate.это очень хороший ресурс для изучения основ.

...