如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项:
1、在项目中引用using System.Transactions命名空间(先要在添加net组件的引用);

2、具体示例如下:

        public static void sendMessage(){           TransactionOptions transactionOption = new TransactionOptions();//设置事务隔离级别transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;// 设置事务超时时间为60秒transactionOption.Timeout = new TimeSpan(0, 0, 60);using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption)){try{//TODOscope.Complete();}catch (Exception ex) {throw new Exception(ex.Message);}finally{//释放资源scope.Dispose();}                               }}

namespace System.Transactions
{//// Summary://     Specifies the isolation level of a transaction.public enum IsolationLevel{//// Summary://     Volatile data can be read but not modified, and no new data can be added during the transaction.可读取但不可修改易失性数据,并且在此过程中不能添加新数据交易。Serializable = 0,//// Summary://     Volatile data can be read but not modified during the transaction. New data can be added during the transaction.在事务期间可以读取但不能修改易失性数据。新数据可以在事务处理期间添加。RepeatableRead = 1,//// Summary://     Volatile data cannot be read during the transaction, but can be modified.事务期间无法读取易失性数据,但可以对其进行修改。ReadCommitted = 2,//// Summary://     Volatile data can be read and modified during the transaction.在事务期间可以读取和修改易失性数据。ReadUncommitted = 3,//// Summary://     Volatile data can be read. Before a transaction modifies data, it verifies if//     another transaction has changed the data after it was initially read. If the//     data has been updated, an error is raised. This allows a transaction to get to//     the previously committed value of the data.可以读取易失性数据。在事务修改数据之前,它会验证另一个事务在最初读取数据后更改了数据。如果数据已更新,出现错误。这使得事务可以到达以前提交的数据值。Snapshot = 4,//// Summary://     The pending changes from more highly isolated transactions cannot be overwritten.无法覆盖来自高度隔离事务的挂起更改。Chaos = 5,//// Summary://     A different isolation level than the one specified is being used, but the level cannot be determined. An exception is thrown if this value is set.正在使用与指定隔离级别不同的隔离级别,但无法确定。如果设置了此值,则会引发异常。Unspecified = 6}
}

事务五种隔离级别IsolationLevel属性一共支持五种事务设置,具体介绍如下:
(1)DEFAULT
  使用数据库设置的隔离级别(默认),由DBA 默认的设置来决定隔离级别。
(2)READ_UNCOMMITTED
  这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。
  会出现脏读、不可重复读、幻读 (隔离级别最低,并发性能高)。
(3)READ_COMMITTED
  保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。
  可以避免脏读,但会出现不可重复读、幻读问题(锁定正在读取的行)。
(4)REPEATABLE_READ
  可以防止脏读、不可重复读,但会出幻读(锁定所读取的所有行)。
(5)SERIALIZABLE
  这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。
  保证所有的情况不会发生(锁表)。

3、对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

4、重启IIS服务器。

参考

  TransactionScop事务机制的使用

C#中使用TransactionScope类(分布式事务)相关推荐

  1. 【转】C#中使用TransactionScope类(分布式事务) 和 锁

    如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项: 1.在项目中引用using System.Transactions命名空间(先要在添加net组件的引用); 2.具 ...

  2. 权威认可!PolarDB-X高分通过中国信通院《分布式事务数据库稳定性专项评测》

    简介:近日,阿里云PolarDB-X云原生分布式数据库完成中国信通院<分布式事务数据库稳定性专项评测>,高分通过全部测试项目. 随着敏捷开发和DevOps模式在IT领域迅速普及,使得数据产 ...

  3. TransactionScope和分布式事务的注意点

    分布式事务听起来很不错,其实不然.它只是尽可能的降低数据不一致的可能性,并不能完全避免.从我的应用中来看,总数约5千万的操作,错了十几个.当然,这个错误率完全可以忍受了.不能忍受的是当你的DB在clu ...

  4. Spring Cloud Alibaba微服务项目中集成Redis实现分布式事务锁实践

    引言 我们知道同一个进程里面为了解决资源共享而不出现高并发的问题可以通过高并发编程解决,通过给变量添加volatile关键字实现线程间变量可见:通过synchronized关键字修饰代码块.对象或者方 ...

  5. C#语言中TransactionScope类的使用

    转自:http://www.blogjava.net/Martin-Liu-Hai-Shi/articles/260286.html 如果在C#中使用TransactionScope类(分布式事务), ...

  6. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案

    Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...

  7. MySQL中基于XA实现的分布式事务

    文章目录 一.前言 二.XA基础 2.1 XA基础知识 2.1.1 DTP是什么? 2.1.2 DTP的结构:AP TM RM(重点001) 2.1.3 DTP的重要概念 2.2 XA事务:基于两阶段 ...

  8. 分布式事务中的Saga模式

    微服务架构(MSA)已经变得非常流行.但是,一个常见问题是如何跨多个微服务管理分布式事务.当微服务架构将单体系统分解为自封装服务时,意味着单体系统中的本地事务现在分布到将按顺序调用的多个服务中. 说到 ...

  9. 没有发布服务器的 rpc 安全信息,或该信息无效,SQLServer之创建分布式事务

    分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...

最新文章

  1. 玩转Spring Cloud之配置中心(config server config client)
  2. python服务器同步
  3. Spring boot的场景启动器
  4. SAP 修改物料价格那些事
  5. 5种流行的Linux发行版:你更喜欢哪一个呢?
  6. 所有赚不到钱的人都是干了自己不愿意或者自己很讨厌的事
  7. halcon图像处理的基本思路
  8. ios-后台运行UIApplication
  9. 寻找春天nbsp;九宫格日记-2011.08.24
  10. 修改yum源带来的问题 curl: (35) Cannot communicate securely with peer: no common encryption algorithm(s).
  11. 祝所有的程序猿春节愉快,好好休息
  12. java算术运算符乘方_用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算等;...
  13. Android获取手机序列号
  14. golang的hijack篡取劫持
  15. flink理论干货笔记(6)
  16. 中国柔性制造系统(FMS)市场发展动态及未来趋势预测报告2022~2028年
  17. 个人电脑和虚拟web服务器对比,用pws来构建自己的WEB服务器
  18. 生物素化学试剂Dde Biotin-PEG4-azide,生物素-PEG4-叠氮化物 水溶性怎么样了?
  19. IM软件私有化方案和云方案有什么区别
  20. 大数据和区块链之间的比较分析

热门文章

  1. ICDE 2021: 针对具有噪音和低采样率轨迹的时空相似算法(附论文链接)
  2. 永大自动扶梯服务器,永大精品扶梯系列项目集萃,刷新城市天际线
  3. JQuery实现照片瀑布流
  4. 如何在Excel/WPS表格中实现IP归属地查询?
  5. wps纸张大小设置成A4_WPS双面打印时怎么设置奇偶页不同的装订线?方法超简单...
  6. 2021萧山三中高考成绩查询,最全!萧山各大高中上线人数揭晓!萧中超800人,三中紧随其后……...
  7. 1672 疯狂的科学家(贪心)
  8. 中型研发组织管理之--leader管理
  9. 寒冬已至,超7亿浏览量的TikTok爆款“针织品”火的“一塌糊涂”
  10. 阿里云mysql空间清理