【问题标题】:Undo/redo + save撤消/重做+保存
【发布时间】:2011-08-04 11:03:05
【问题描述】:

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

  1. 用户应该能够撤消/重做命令,例如插入、编辑和删除帐户、交易等。
  2. 这些命令只应在用户单击保存时持久保存到 SQL CE 数据库中。

有什么最佳做法可以做到这一点吗?我已经读过实现命令模式对于撤消/重做要求很有用。对我来说,问题在于持久化对数据库的更改。我使用的是业务实体而不是数据集,并且我不能使用 Linq to SQL 或实体框架,所以我不确定如何跟踪对这些实体所做的更改以在用户单击保存时持久保存到数据库。

我的问题是:

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

【问题讨论】:

标签: c# .net design-patterns


【解决方案1】:

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

命令会改变你的业务实体,它们会将当前状态存储在状态对象中,并列出之前的状态条目,保存将保存当前状态,回滚将恢复之前的状态。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      相关资源
      最近更新 更多