我正在开发一个具有以下两个要求的C#应用程序:
这样做有什么最佳做法吗?我已经读过,实现命令模式对撤消/重做要求很有用。对我来说问题在于持久化对数据库的更改。我使用的是业务实体,而不是DataSets,我不能使用Linq to SQL或Entity Framework,因此我不确定如何跟踪对这些实体所做的更改,以便在用户单击“保存”时保留到数据库。
我的问题是:
建议实施工作单元模式以跟踪更改还是有更好的方法?我不确定这将如何与命令模式结合,例如是传递给命令的工作单元,它将实体标记为脏/新/删除,以及执行命令的撤消方法时会发生什么?实体是否标记为脏/新/再次删除,还是可以以某种方式从工作单元中删除?
答案 0 :(得分:2)
http://en.wikipedia.org/wiki/Memento_pattern
命令将更改您的业务实体,它们将当前状态存储在状态对象中,以及先前状态条目列表,保存将保存当前状态,回滚将恢复以前的状态。
答案 1 :(得分:0)
使用命令模式进行以下更改(在常规命令模式中,您有一个调用方法。在此专业化中,您使用调度程序来调用命令。)
创建一个Dispatcher类,通过该类调用所有命令。在该类中创建一个为所有命令调用的事件。创建一个侦听该事件的类。让该类保存序列化对数据库的所有更改。