Реализация автосохранения в WPF/MVVM/NHibernate

Моему клиенту нравятся такие программы, как Microsoft OneNote, в которых изменения сохраняются автоматически, и он может отказаться от них, когда явно захочет это сделать. Мне придется реализовать некоторые функции отмены, но я выясню это в другой раз.

Я полагаю, что с NHibernate я могу вызывать ISession.Update для каждого отдельного изменения свойства/привязки, но я вижу настоящую боль с этим подходом в будущем. Я не фанат таймеров, но, возможно, 5-секундный таймер, который запускается при изменении свойства/привязки, а в конце таймера использует поток BackgroundWorker для сохранения в БД.

Что вы думаете?


person Echiban    schedule 24.04.2010    source источник


Ответы (1)


ISession.Update при каждом изменении свойств обычно не является хорошей идеей. События изменения свойства запускаются довольно часто. Это может замедлить работу вашего приложения, когда вы выполняете ISession.Update при каждом изменении. Это, вероятно, приведет к плохому пользовательскому опыту.

В нашем приложении такое же поведение. Мы сохраняем изменения, когда представление закрывается (какое-то другое связанное событие). Например, когда пользователь закрывает вкладку, данные, которые отображались на этой вкладке, закрываются.

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

person Gamlor    schedule 24.04.2010