.net操作的交易

时间:2009-01-20 06:37:08

标签: c# transactions

我必须在Windows应用中执行3次操作作为交易。这些不是SQL操作,否则我使用了TransactionScope。第一个操作是在db中记录一些值,第二个是将电子邮件移动到pst,第三个是将电子邮件移动到另一个邮箱。如果这些操作失败,如果有的话,我希望其他操作回滚到以前的状态。有什么办法,这个交易可以实现。

3 个答案:

答案 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指出的那样,手动完成它将是最简单的选择。