zoukankan      html  css  js  c++  java
  • C#中的事务TransactionScope

    TransactionOptions transactionOption = new TransactionOptions();
                        //设置事务隔离级别
                        transactionOption.IsolationLevel = System.Transactions.IsolationLevel.Serializable;
                        // 设置事务超时时间为60秒
                        transactionOption.Timeout = new TimeSpan(0, 0, 30);
                        using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption))
                        {
    //处理业务逻辑
     scope.Complete();
    }
    View Code

    一、TransactionScope的优点


    1、使用起来比较方便.TransactionScope可以实现隐式的事务,使你可以在写数据访问层代码的时候不用考虑到事务,而在业务层的控制事务.

    2、可以实现分布式事务,比如跨库或MSMQ.

    二、TransactionScope缺点

    1、性价比不高.比如,你只是在"Scope"里控制一个库的事务.用"TransactionScope"就有点浪费了.
    2、一般情况下只要你使用"TransactionScope",都要配置MSDTC,要配防火墙,要开139端口.这个端口不可以更改

    三、TransactionScope事务级别

    在TransactionScope中默认的事务级别是Serializable,即在事务过程中,完全性锁表。别的进程不能查询,修改,新增,删除。这样会导致效率大大降低,虽然数据完整性很高。通常我们不需要那么高的数据完整性。所以需要修改默认的事务级别。

    四、在C#中使用TransactionScope类(分布式事务),则须注意如下事项

    1、在项目中引用using System.Transactions命名空间(先要在添加net组件的引用);

    2、对MSDTC组件设置:

    在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务。


    a、控制面板->管理工具->组件服务->计算机->我的电脑->右键->属性
    b、选择MSDTC页, 确认"使用本地协调器"
    c、点击下方"安全配置"按钮
     

    d、勾选: "允许网络DTC访问","允许远程客户端","允许入站","允许出站","不要求进行身份验证".
    e、对于数据库服务器端, 可选择"要求对呼叫方验证"
    f、勾选:"启用事务Internet协议(TIP)事务"。
    g、在双方防火墙中增加MSDTC.exe例外
    可用命令行: netsh firewall set allowedprogram %windir%/system32/msdtc.exe MSDTC enable

    3、重启IIS服务器。

    注意:

    我们只要确保数据库的打开操作是在事务范围内打开就行了。这样就可以做到事务的正确操作。

    如果WEB服务器和数据库是在同一台服务器上,TransactionScope使用的是本地事务,这时不需要配置MSDTC。

    如果WEB服务器和数据库不在同一台服务器上,TransactionScope会自动提升事务级别为分布式事务,这时就需要配置MSDTC。

  • 相关阅读:
    散列表(Hash Table)
    MVC中TextBox事件
    AJAX控制DropDownList两级联动
    唯一标示
    检查对象属性是否有空值
    foreach枚举div控制单个显示
    JS获取DropDownList其中一项的文本值
    随便
    MVC常用
    不可用输入框
  • 原文地址:https://www.cnblogs.com/SmilePastaLi/p/6824387.html
Copyright © 2011-2022 走看看