c# - TransactionScope 的好处/用途是什么?

标签 c# nhibernate transactionscope

我使用 NHibernate 有一段时间了,发现下面的代码使用了 Transaction scope

using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
    using (var session = sessionFactory.OpenSession())
    {
       using (var transaction = session.BeginTransaction())
       {
         // do work
       }
     }
}

我通常在不将代码包装到 TransactionScope 的情况下做所有事情,我是做错了什么还是只是错过了一些漂亮的功能?

最佳答案

用法是:交易。这是否是好处则更为复杂。有更直接的方式来实现事务——ADO.NET 事务。这些使用起来有点笨拙(您需要记住在每个命令上设置事务),但非常有效。

事务范围具有环境事务的优势;这使得它更容易使用。但是,它以不同的方式工作。特别是,事务范围支持多资源事务——这可能意味着多个数据库等。这通常是通过 DTC 完成的,但 DTC 有开销——它更昂贵(并且需要特定的防火墙配置等)。在许多单数据库情况下,它可以使用 LTM 而不是完整的 DTC 的捷径,但这仍然比 ADO.NET 事务更昂贵...只是不如 DTC .

一个强大的功能,但在使用之前确保您打算使用它;p

关于c# - TransactionScope 的好处/用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25725187/

相关文章:

c# - Windows 8 C# Store 应用程序 - 链接到商店和评论

nhibernate - 如何在(流畅)NHibernate 中添加只读集合属性?

nhibernate - NHibernate 中的逆属性

entity-framework-5 - 使用 Entity Framework Code First 进行事务处理

c# - 根事务回滚时嵌套事务会回滚吗?

c# - 使用 MySQL 查询填充列表<string>

c# - 如何读取和编辑 XML 节点

c# - 使用 Math.Pow(10, n) 可以吗?

c# - 如何使用NHibernate实现“保存/放弃”功能?

c# - 具有多个 dbcontext 的一个事务