Я создаю приложение Windows Forms с помощью NHibernate. Это приложение MDI, поэтому нет ограничений на количество форм, которые пользователь может открыть одновременно (вероятно, много).
Для большинства форм я хочу иметь кнопки «ОК» и «Отмена». Оба закрывают форму, но «ОК» также сохраняет измененные данные в БД. Формы могут быть довольно сложными, и изменения, вероятно, затронут целый граф объектов, добавляя некоторые, удаляя некоторые и изменяя некоторые другие. Было бы хорошо, если бы изменения могли автоматически обнаруживаться и сохраняться по мере необходимости, без необходимости вручную отслеживать каждый из них.
Что было бы хорошим способом сделать это?
Дополнительная информация : Я могу создать любую схему БД, какую захочу. Я использую MSSQL 2008 и в настоящее время определил первичные ключи GUID (с генератором guid.comb) и столбец TIMESTAMP для оптимистичного параллелизма.
Я попытался просто установить FlushMode
NHibernate ISession
на Never
, выполнив все необходимые изменения и затем вызвав Flush()
, если пользователь нажал OK. Но это не сработало.