English 中文(简体)
.NET操作的交易
原标题:
  • 时间:2009-01-20 06:37:07
  •  标签:

我需要在Windows应用程序中执行3个操作作为事务。这些不是SQL操作,否则我会使用TransactionScope。第一项操作是记录一些值在数据库中,第二项是将电子邮件移动到pst中,第三项是将电子邮件移动到另一个邮箱中。如果其中任何操作失败,我希望其他操作回滚到先前的状态。是否有任何方法可以实现这个事务。

最佳回答

你可以编写自己的ResourceManager,并使用System.Transactions来帮助你处理事务。

将此翻译成中文:http://www.codeguru.com/csharp/.net/net_data/sortinganditerating/article.php/c10993__1/ http://www.codeguru.com/csharp/.net/net_data/sortinganditerating/article.php/c10993__1/

取决于复杂度和您需要的频率,这可能是一个过于复杂的解决方案。

问题回答

除非您的电子邮件后端支持DTC,否则您无法使用TransactionScope;请注意,TransactionScope不仅限于SQL提供程序;一些中间件工具支持它,甚至为.NET对象提供了基于TransactionScope的支持(不是任何对象—只有那些使用库的基类/属性包等编写的对象)。

根据现状,您可能需要手动回滚。

Doing a transaction "by the book" is easy if every single encompassed actions have proper transactional support, otherwise it would be a nightmare trying to support (commit/rollback) each of them individually in their own DIY ways :)
As Marc pointed out, doing it manually would be the simpler choice as it stands.





相关问题
热门标签