我必须在Windows应用中执行3次操作作为交易。这些不是SQL操作,否则我使用了TransactionScope。第一个操作是在db中记录一些值,第二个是将电子邮件移动到pst,第三个是将电子邮件移动到另一个邮箱。如果这些操作失败,如果有的话,我希望其他操作回滚到以前的状态。有什么办法,这个交易可以实现。
答案 0 :(得分:1)
除非您的电子邮件后端支持DTC,否则您可以使用TransactionScope
;请注意TransactionScope
不仅限于SQL提供者;一些中间件工具支持它,甚至还有基于TransactionScope
的.NET对象(不是任何对象 - 仅使用库的基类/属性包/等编写的对象)。
目前,你可能不得不手动回滚。
答案 1 :(得分:1)
您可以滚动自己的ResourceManager并使用System.Transactions来帮助您处理交易。
http://www.codeguru.com/csharp/.net/net_data/sortinganditerating/article.php/c10993__1/
根据复杂程度以及您需要的频率,这可能是一个过于复杂的解决方案。
答案 2 :(得分:0)
如果每个包含的操作都有适当的事务支持,那么“通过本书”执行事务很容易,否则尝试以自己的DIY方式单独支持(提交/回滚)每个事务将是一场噩梦:) /> 正如Marc指出的那样,手动完成它将是最简单的选择。