【发布时间】:2011-01-28 08:12:25
【问题描述】:
本质上,这是this question 的后续行动。我开始觉得我应该放弃整个想法,但我会再试一次。
我想要的很像一个数据库事务。它应该跟踪我对数据库的更改,然后最终允许我提交或回滚它们。如果我插入一个对象,我应该在下一个(适当的)SELECT 查询中取回它。如果我删除它,未来的 SELECT 查询不应该返回它。等等。
但有一个问题 - 此事务将运行很长时间。它会在用户打开表单时启动(我在这里谈论的是 Windows 表单),提交/回滚将在用户关闭它时启动(使用 OK/Cancel)。所以它可能需要几秒钟到几天之间的任何时间。此要求排除了标准数据库事务,因为这将锁定它所触及的表/行,并且其他用户将无法使用系统。此外,事务在真正提交之前不应向数据库提交任何更改。因此,如果一个用户进行了一些更改,其他人在点击 OK 按钮之前不会看到它们。这样可以防止计算机崩溃或与网络断开连接时出现错误。
如果解决方案对我的模型施加了限制,我很好(顺便说一句,我使用的是 MSSQL 2008)。我可以以任何我喜欢的方式设计数据库/代码。我也同意提交可能会失败,因为有人已经修改了我的事务触及的对象之一。
有这样的吗?我查看了 NHibernate.Burrow,但我不确定这就是我想要的。
补充:这是项目的开始,所以我不依赖于 NHibernate。我开始使用它,但我仍然可以轻松更改。
【问题讨论】:
标签: nhibernate orm transactions offline