撤消/重做+保存

问题描述

| 我正在开发具有以下两个要求的C#应用​​程序: 用户应该能够撤消/重做命令,例如插入,编辑和删除帐户,交易等。 仅当用户单击“保存”时,这些命令才应保留在SQL CE数据库中。 有什么最佳做法吗?我已经读到,实现命令模式对于撤消/重做需求很有用。对我来说,问题在于将更改保留到数据库中。我使用的是业务实体而不是数据集,并且无法使用Linq to SQL或Entity Framework,因此我不确定如何在用户单击“保存”时跟踪对这些实体所做的更改以将其保留到数据库中。 我的问题是: 是否建议实施工作单元模式以跟踪更改,还是有更好的方法?我不确定如何将其与命令模式结合使用,例如传递给命令的工作单元将实体标记为脏/新/已删除,执行命令的undo方法时会发生什么?实体是否再次标记为脏/新/已删除,或者可以某种方式将其从工作单元中删除?     

解决方法

http://en.wikipedia.org/wiki/Memento_pattern 命令将更改您的业务实体,它们将当前状态存储在状态对象中,并存储先前状态条目的列表,保存将保存当前状态,回滚将恢复先前的状态。     ,使用命令模式进行以下更改(在常规命令模式中,您具有invoke方法。在本专业中,您使用分派器来调用命令)。 创建一个Dispatcher类,通过它调用所有命令。在该类中创建一个事件,该事件将为所有命令调用。创建一个监听该事件的类。让该类保存序列化对数据库的所有更改。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...