Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
可能重复: C# 对象的事务?
我的问题是 - 确保执行给定段中的所有代码或根本不执行任何代码的最佳方法是什么?Try Catch 在这种情况下不起作用,因为如果第 1 行是更新,它会发生,然后如果第 2 行是发送电子邮件并且由于某种原因失败,它会抛出异常,但更新将会发生已经(而我想要的是这样的——>如果第 40 行失败,请不要执行第 20 行)。
我知道在数据库方面你可以使用事务,但我想知道代码中是否有类似的东西......
事务通过在发生错误时执行回滚来确保原子性。但并非所有操作都可以回滚,例如发送邮件。它从弓中射出,不再回来。
简短的回答是,这是无法做到的。
更新:@JustinNiessner 上面的评论链接到这个很好的问题,建议在这个领域做一些工作。但请注意,除非在最简单的情况下,否则无法保证。具体来说,回滚 i/o 副作用可能非常困难。
一般来说,没有什么可以回滚您编写的任何语句。
但是可以将支持事务添加到代码的某些特定部分。在这种情况下,分布式事务可能很有用。