本文共 1544 字,大约阅读时间需要 5 分钟。
之前写过三篇这个文章系列,都是围绕一个主题,那就是.net何时将transactionscope提升为分布式事务,今天我借用ThreadStatic特性,把这个知识点又证明了一下,下面总结一下:
第二十六回
第二十七回
第二十八回
数据上下文只有是一个,才有可能不会产生分布式事务
数据上下文是一个,并且SubmitChange也是一个,这时,才不会提升为分布式事务(MSDTC)
看一下图,这是一个ThreadStatic特性的DataContext的图示,我已经禁用的MSDTC服务
而下面的图是我使用普通的实例数据上下文,它将产生多个数据上下文,从而将transactionscope提升为分布式事务,所以,下面图的异常也就被抛出来了,呵呵!
下面为方法调用:普通实例上下文
ThreadStatic特性的数据上下文
下面是事务的程序块,它有多个操作,每个操作都有自己的SubmitChanges()
而它产生的SQL语句,则是使用了一个SQL连接池,性能方面已经是最优了!
下面是使用iunitofwork模块下,解决程序提升到MSDTC的实例代码,供大家参考
IUnitOfWork unitOfWork = new EEE114Entities(); iUser_Info = new EEE114RepositoryBase(unitOfWork); iUser_Profile = new EEE114RepositoryBase (unitOfWork); using (TransactionScope trans = new TransactionScope()) { unitOfWork.IsNotSubmit = true; iUser_Info.Insert(new User_Info { UserName = "test", Password = "", RegisterTime = DateTime.Now, RegisterIP = "", UserStatus = 0, ApproveStatus = "00000", Experience = 0, Money = 0, Integral = 0, }); iUser_Profile.Insert(new User_Profile { UserID = 98056, RealName = "iunitofwork占占测试MSDTC" }); unitOfWork.Save(); }
本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。