Я немного смущен тем, как работает Flush
(и NHibernate.ISession
) в NHibernate.
Из моего кода кажется, что когда я сохранил объект с помощью ISession.Save(entity)
, объект можно сохранить непосредственно в базе данных.
Однако при обновлении и объекте с использованием ISession.SaveOrUpdate(entity)
или ISession.Update(entity)
объект в базе данных не обновляется --- мне нужно вызвать ISession.Flush
, чтобы его обновить.
Процедура обновления объекта следующая:
- Получить объект из базы данных с помощью
ISession.Get(typeof(T), id)
- Измените свойство объекта, например
myCar.Color="Green"
- Верните его в базу данных с помощью
ISession.Update(myCar)
myCar
не обновляется в базе данных. Однако, если я затем назову ISession.Flush
, то он будет обновлен.
Когда использовать Flush
и когда не использовать его?