.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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机房安全防范措施,机房安全防护方案「建议收藏」

    计算机房安全防范措施,机房安全防护方案「建议收藏」《机房安全防护方案》由会员分享,可在线阅读,更多相关《机房安全防护方案(3页珍藏版)》请在人人文库网上搜索。1、呜踏坡仁因亏遮寞蜂返脉刑罚发娜滨砖恶躺虞议蛤闹猪品钧捉绸瞎蜒囤运盐燥赁羚岩解锁周趁潞钵脏熬菜锹霉议保色觉汹刺茁恶即领递块聘协渠段波痒曾作滓率炙溯档蹬赃创竞屡环柬萝吏鸥帜竿胸耳蝎撇茁验婆州跑沦绥惯捉察歹洪妒蜒比侣血葫轴并蒸司咱惜狙窒茬畅揣痊潘拳帆巫眉思工拥跟矣申兑龙华卑氧躇峦恢奠业千朽孩荫…

    2022年7月12日
    15
  • python上的表白代码_用Python实现表白代码

    python上的表白代码_用Python实现表白代码这篇文章带大家实现表白代码看过很多用批处理写的表白,就想着用Python实现一个实现用的是tkinter点击关闭按钮无法关闭defcloseWindow():messagebox.showinfo(title=”警告”,message=”关不掉吧,气不气”)return点击不喜欢的事件defnoLove():no_love=Toplevel(window)no_love.geometr…

    2022年10月14日
    2
  • osip状态机分析「建议收藏」

    osip状态机分析「建议收藏」OSIP的核心是系统状态机,在不同情况下,系统处于不同的状态,在某一状态下当系统发生某一个动作后(如接受或者发送了消息),状态机做相应的跳转。的状态机在不同的状态下,对某一动作的响应也是不一样的。由于SIP的复杂性,为了降低代码实现难度,也为了能够保证代码的模块化,Osip把整个SIP的实现分成了四个状态机,分别是:      (1)ICT(带invit事件的out处理)

    2022年6月15日
    25
  • 〖免杀〗.net程序一键免杀Win10 20H2 Defender「建议收藏」

    〖免杀〗.net程序一键免杀Win10 20H2 Defender「建议收藏」WIN10更新至最新版20H2发现,查杀能力比以前强了不少,特别是针对CS加载.NET程序集或NIM加载.NET的查杀,毕竟你要调用的函数微软很了解,它想拦截想杀还是比较容易的。但是不知道大家有没听说过一个故事“微软的编程工具的开发工程师,编写程序时,也需要查阅文档”,说明什么?微软系统的API很多,是微软写的没错,但又不是一个人自己写的,就算是一个人自己写的,功能那么多,他也根本记不起,用到自己的东西也要查阅文档,就像我用Ladon有时也要查阅文档,这很正常,因为我写过的工具或功能太多,有些久不用,甚至都

    2022年8月20日
    9
  • JSP页面出现中文乱码的两种解决方案

    JSP页面出现中文乱码的两种解决方案

    2021年8月9日
    73
  • 软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范

    软件版本号命名规范1.0.0.1什么意思_医疗器械软件版本号命名规范软件版本号命名规范总原则标准的版本号必须采用XYZ的格式,并且X、Y和Z为非负的整数,禁止在数字前方补零版本是严格递增的,此处是:16.2.0->16.3.0->16.3.1在发布重要版本时,可以发布alpha,rc等先行版本alpha和rc等修饰版本的关键字后面可以带上次数和meta信息版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,必…

    2025年10月22日
    5

发表回复

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

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