.net mysql transactionscope_C#中的事务TransactionScope

.net mysql transactionscope_C#中的事务TransactionScopeTransactionOptionstransactionOption=newTransactionOptions();//设置事务隔离级别transactionOption.IsolationLevel=System.Transactions.IsolationLevel.Serializable;//设置事务超时时间为60秒transactionOption.Timeout=new…

大家好,又见面了,我是你们的朋友全栈君。

335b83df261c422459d4afc29ba290e5.png

d1b641f023dd079c9e4a800b96607d9d.gif

TransactionOptions transactionOption = newTransactionOptions();//设置事务隔离级别

transactionOption.IsolationLevel =System.Transactions.IsolationLevel.Serializable;//设置事务超时时间为60秒

transactionOption.Timeout = new TimeSpan(0, 0, 30);using (TransactionScope scope = newTransactionScope(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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161943.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月19日 下午10:46
下一篇 2022年7月19日 下午10:46


相关推荐

  • JAVA保留两位小数_精确小数点后两位

    JAVA保留两位小数_精确小数点后两位这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧mportjava.text.DecimalFormat;DecimalFormatdf=newDecimalFormat(“######0.00”);doubled1=3.23456doubled2=0.0;doubled3=2.0;df.format(d1);df.format(…

    2025年12月5日
    5
  • 30天全天安防云存储_闪电云智安全怎么样

    30天全天安防云存储_闪电云智安全怎么样2019独角兽企业重金招聘Python工程师标准>>>…

    2025年11月23日
    7
  • pycharm 社区版创建django项目连接mysql数据库

    pycharm 社区版创建django项目连接mysql数据库1 创建项目选择 NewProject 选择 Newenvironme 意思是给这个项目一个单独的虚拟环境 Location 就是虚拟环境的地址 好处是这个项目下载的安装包放在 location 目录下 而不会改变全局的 python 环境 我的习惯是给每一项目都创建一个虚拟环境 我们要用 django 框架 所以不需要 main py 文件 Create 因为要创建新的虚拟环境 所以时间有点长创建之后的项目结构如下图 venv 就是虚拟环境 2 下载 django

    2026年3月27日
    2
  • 实时系统动态内存算法分析dsa(二)——TLSF代码分析

    实时系统动态内存算法分析dsa(二)——TLSF代码分析上一篇我们看了dsa的分类和简单的内存管理算法实现,这篇文档我们来看TLSF的实现,一种更加高级的内存管理算法;1、实现原理基本的Segregated Fit算法是使用一组链表,每个链表只包含特定长度范围来的空闲块的方式来管理空闲块的,这样链表数组的长度可能会很大。TLSF为了简化查找定位过程,使用了两层链表。第一层,将空闲内存块的大小根据2的幂进行分类,如(16、32、64.

    2022年6月28日
    32
  • STM32与DS1302设计时钟芯片,超详细

    STM32与DS1302设计时钟芯片,超详细DS1302 是 DALLAS 公司推出的涓流充电时钟芯片 内含有一个实时时钟 日历和 31 字节静态 RAM 通过简单的串行接口与单片机进行通信 实时时钟 日历电路提供秒 分 时 日 周 月 年的信息 每月的天数和闰年的天数可自动调整 时钟操作可通过 AM PM 指示决定采用 24 或 12 小时格式 DS1302 与单片机之间能简单地采用同步串行的方式进行通信 仅需用到三个口线 1 RES 复位 2

    2026年3月20日
    1
  • 三种权限设计方案「建议收藏」

    三种权限设计方案「建议收藏」三种权限设计方案的归纳和比较权限设计是很多系统重要的组成部分,主要用于控制功能和流程,本文将几种常见的权限设计方案(权限系统的名都是自己起的)的基本设计写出来,其中不恰当处还请大家指出,我们来讨论一下.1.等级权限系统    这种权限系统在论坛中很常见,在这种系统中,权限级别如同官阶从低到高排列,每个用户拥有一个权限,其中设定了这个用户的权限等级,在用户需要执行操作前先查看

    2022年7月16日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号