撤消/重做+保存

时间:2011-04-13 06:42:07

标签: c# .net design-patterns

我正在开发一个具有以下两个要求的C#应用​​程序:

  1. 用户应该可以撤消/重做命令,例如插入,编辑和删除帐户,交易等。
  2. 这些命令只应在用户单击“保存”时保留到SQL CE数据库。
  3. 这样做有什么最佳做法吗?我已经读过,实现命令模式对撤消/重做要求很有用。对我来说问题在于持久化对数据库的更改。我使用的是业务实体,而不是DataSets,我不能使用Linq to SQL或Entity Framework,因此我不确定如何跟踪对这些实体所做的更改,以便在用户单击“保存”时保留到数据库。

    我的问题是:

    建议实施工作单元模式以跟踪更改还是有更好的方法?我不确定这将如何与命令模式结合,例如是传递给命令的工作单元,它将实体标记为脏/新/删除,以及执行命令的撤消方法时会发生什么?实体是否标记为脏/新/再次删除,还是可以以某种方式从工作单元中删除?

2 个答案:

答案 0 :(得分:2)

http://en.wikipedia.org/wiki/Memento_pattern

命令将更改您的业务实体,它们将当前状态存储在状态对象中,以及先前状态条目列表,保存将保存当前状态,回滚将恢复以前的状态。

答案 1 :(得分:0)

使用命令模式进行以下更改(在常规命令模式中,您有一个调用方法。在此专业化中,您使用调度程序来调用命令。)

创建一个Dispatcher类,通过该类调用所有命令。在该类中创建一个为所有命令调用的事件。创建一个侦听该事件的类。让该类保存序列化对数据库的所有更改。