2010-04-24 73 views
1

我的客户喜欢像Microsoft OneNote这样的程序,在这些程序中自动保存更改,并且他可以在明确要求时选择丢弃。我将不得不实施一些撤消功能,但我会在其他时间弄清楚。使用NHibernate,我想我可以在每一个属性/绑定变化上调用ISession.Update,但是我可以看到这种方法在路上真正的痛苦。我不是定时器的粉丝,但也许是一个5秒钟的定时器,从属性/绑定更改开始,并在定时器结束时使用BackgroundWorker线程保存到数据库。在WPF/MVVM/NHibernate中实现自动保存

您认为如何?

回答

1

每个属性更改的ISession.Update通常不是一个好主意。财产变化事件经常被激发。当你对每一次改变进行ISession.Update时,它可能会减慢你的应用程序。这可能会导致糟糕的用户体验。

在我们的应用程序中有相同的行为。我们在视图关闭时(一些其他相关事件)存储更改。例如,当用户关闭标签时,该标签中显示的数据将被关闭。

一个额外的计时器可能是一个好主意,当应用程序崩溃/意外发生时防止数据丢失。