我正在尝试构建一个遵循存储库和工作单元模式的系统,以允许持久性无知/单元测试等。我正在寻找有关处理回滚的建议。理想情况下,我想使用 POCO,但我认为我可能至少需要实现一个接口来提供一些零碎的东西。
所以假设我们有两个存储库,一个上下文/工作单元。
我添加一个项目,修改另一个项目并删除第三个项目。重复第二个存储库,然后我调用回滚。
在过去,我为此使用了类似于 DataSet 的东西。每个对象都有一个pendingNew、pendingAmended、pendingDeleted、clean的状态。还有一个用于回滚的对象的最后一个持久版本的副本。
你将如何实现这一点?
编辑:
好的,这就是我认为我实际上正在努力解决的问题。准备图案:)
最终该项目是 WPF MVVM。因此,我们正在查看模型以了解商店在这里的情况。
我想我一直在尝试将模型与存储库的概念混为一谈,因为我认为模型应该使用 UOW 和存储库来提供模型需要提供的功能。这听起来更好吗?
我想要完全的持久性无知,所以想象我的域包括一个客户、一个订单和订单行。
假设 GUI 有一个按钮新订单,允许用户填写客户详细信息、订单详细信息和 1-n OrderLine 详细信息。他点击保存,他们进入数据库,他点击取消,他们没有。
因此,在这种情况下,模型可能会向 CustomerRepository 询问客户,然后向 OrderRepository 询问新订单,然后向 OrderLineRepository 询问每个新行,然后告诉工作单元保存它们。
这听起来合理吗?它对我有用,我认为这是定义分离的地方。我很想在模型和存储库之间有另一个 API。不,这很愚蠢。
编辑2:这是一篇很好的文章,有点帮助。