首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工作单元,回滚选项

工作单元,回滚选项
EN

Stack Overflow用户
提问于 2011-02-10 21:51:57
回答 2查看 6.5K关注 0票数 5

我正在尝试构建一个遵循工作模式的存储库和单元的系统,以允许持久化、忽略/单元测试等。我正在寻找处理回滚的建议。理想情况下,我想使用POCO,但我认为我可能至少需要实现一个接口来提供一些零碎的东西。

因此,假设我们有两个存储库,一个上下文/工作单元。

我添加了一项,修改了另一项,删除了第三项。对第二个存储库重复上述操作,然后调用rollback。

在过去,我使用类似于DataSet的东西来实现这一点。每个对象都有一个状态pendingNew、pendingAmended、pendingDeleted、clean。还有一个用于回滚的对象的副本最后一个持久化版本。

您将如何实现这一点?

编辑:

好的,这就是我想要的东西。准备好进行图案化:)

最终,该项目是WPF MVVM。所以无论商店在哪里,我们都在看模型。

我认为我一直在尝试将模型与存储库的概念混为一谈,因为我认为模型应该使用UOW和存储库来提供模型需要提供的功能。这听起来是不是更好?

我想要完全的持久化,所以假设我的域包含一个客户、一个订单和OrderLines。

假设图形用户界面有一个新订单按钮,允许用户填写客户详细信息、订单详细信息和1-n OrderLine详细信息。他点击保存,他们进入数据库,他点击取消,他们不会。

因此,在本例中,模型可能要求CustomerRepository提供一个客户,然后要求OrderRepository提供一个新订单,然后询问每个新行的OrderLineRepository,然后告诉工作单元保存它们。

这听起来合理吗?对我来说是这样的,我认为这就是分离的定义。我半心半意地想在模型和存储库之间使用另一个API。不,那太傻了。

编辑2:这是一篇很好的文章,有点helped

EN

回答 2

Stack Overflow用户

发布于 2011-02-10 22:00:26

在没有更多细节的情况下很难确定,但我会从IDbConnection接口和相关接口来研究实现。它为您提供了一个大多数有经验的C#程序员都会熟悉的界面。

在幕后,说实话,这真的取决于你的存储机制的效率。如果它能有效地处理大量更改,那么您最好让回滚机制构建一个执行回滚所需的操作列表,该列表在“提交”时被丢弃。另一方面,如果更新开销很大,那么让事务机制维护一个提交操作列表,这些操作在回滚时会被丢弃。您还需要考虑其他代码是否应该在提交之前看到更新;在前一种方法中,它们会看到更新,在后一种方法中,它们不会。

票数 2
EN

Stack Overflow用户

发布于 2011-02-10 22:01:59

我会使用像NHibernate或实体框架这样的框架来实现这一点。:) NHibernate允许您使用POCO,并且已经为您完成了所有的管道工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4957902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档