将不确定变为确定~transactionscope何时提升为分布式事务~续

简介:

相关文章

将不确定变为确定~transactionscope何时提升为分布式事务

将不确定变为确定~transactionscope何时提升为分布式事务~续      

将不确定变为确定~transactionscope何时提升为分布式事务~再续(避免引起不必要的MSDTC)


 

          之前写过一篇关于《将不确定变为确定~transactionscope何时提升为分布式事务》的文章,但今天又测试了一下,发现前一篇文章有很多问题,这里再把问题说一下。

一 什么时间会把你的transactionscope提升为分布式事务,即要使用MSDTC服务

  1.   当你的WEB服务器与数据库服务器在同台电脑上,对同一个库进行操作时,它不会提升为分布式事务
  2.   当你的WEB服务器与数据库服务器在同台电脑上,对于同一个库,建立多个数据上下文时,它不会提升为分布式事务
  3.   当你的WEB服务器与数据库服务器在同台电脑上,当你操作两个库的表,这时才会提升为分布式事
  4.       当你的WEB服务器与数据库服务器不在同台电脑上,每次都会引发MSDTC

二 案例分析:

 public class DbBase : Commons.Data.DbContextRepositoryBase
    {

        public DbBase()
            : base(Commons.Data.DbFactory.Intance(System.Configuration.ConfigurationManager.ConnectionStrings["testEntities1"].ToString(), 2, 0))
        {

        }
    }

    public class DbBase2 : Commons.Data.DbContextRepositoryBase
    {

        public DbBase2()
            : base(Commons.Data.DbFactory.Intance(System.Configuration.ConfigurationManager.ConnectionStrings["testEntities2"].ToString(), 2, 1))
        {

        }
    }
public class ReviewRepository : DbBase
    {

    }
    public class TestRepository : DbBase
    {
        public void Insert()
        {
            var product = new Product
            {
                Info = "test",
                Name = "test",
            };

            var product_Comment = new Product_Comment
            {
                CommentInfo = "test",
                CommentTitle = "Test",
                ProductID = 1,
                UserID = 1
            };
            var review = new Review
            {
                CreateDate = DateTime.Now,
                Info = "test",
                ObjID = 1,
                ObjType = 1,
                Status = 100,
                UserID = 1,
            };
            using (var trans = new TransactionScope())
            {
                //var testEntities = new testEntities();
                // var testEntities2 = new testEntities();
                #region  一个dbcontext对象不发生MSDTC
                //testEntities.Product.AddObject(product);
                //testEntities.Review.AddObject(review);
                //testEntities.SaveChanges();
                #endregion

                #region  多个dbcontext对象也不发生MSDTC
                //testEntities.Product.Add(product);
                //testEntities.SaveChanges();
                //testEntities2.Review.Add(review);
                //testEntities2.SaveChanges();
                #endregion

                #region 自己生产的DbContext对象也没有发生MSDTC
                //    base.Insert<Product>(product);
                base.Insert<Product_Comment>(product_Comment);
                new ReviewRepository().Insert<Review>(review);
                #endregion
                trans.Complete();
            }
        }
    }

测试环境:SQLSERVER2008在一台服务器

     IIS7在别一台服务器

感谢阅读!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:将不确定变为确定~transactionscope何时提升为分布式事务~续,如需转载请自行联系原博主。

目录
相关文章
|
安全 区块链 数据安全/隐私保护
区块链技术在数字身份认证中的应用与展望
【2月更文挑战第3天】 随着数字化时代的到来,个人身份认证的安全性和便捷性成为了重要的议题。区块链技术作为一种去中心化、不可篡改的分布式账本技术,具有很大潜力用于解决数字身份认证领域的问题。本文将探讨区块链技术在数字身份认证中的应用现状,分析其优势和挑战,并展望未来发展方向。
736 1
|
11月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
490 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
12月前
|
人工智能 算法 物联网
Lyra:SmartMore 联合香港多所高校推出的多模态大型语言模型,专注于提升语音、视觉和语言模态的交互能力
Lyra是由香港中文大学、SmartMore和香港科技大学联合推出的高效多模态大型语言模型,专注于提升语音、视觉和语言模态的交互能力。Lyra基于开源大型模型和多模态LoRA模块,减少训练成本和数据需求,支持多种模态理解和推理任务。
386 33
Lyra:SmartMore 联合香港多所高校推出的多模态大型语言模型,专注于提升语音、视觉和语言模态的交互能力
|
供应链 搜索推荐 数据挖掘
拼多多根据ID取商品详情原数据 API (pinduoduo.item_get_app_pro)在电商中的应用
拼多多是一个非常受欢迎的电商平台,它提供了许多API接口来帮助开发者集成和扩展其功能。其中,pinduoduo.item_get_app_pro API接口是用于根据商品ID获取商品详情的。这个API接口在电商应用中具有广泛的应用场景,以下是几个例子: 个性化推荐:电商平台可以根据用户的浏览和购买历史,利用pinduoduo.item_get_app_pro API接口获取商品的详细信息,然后向用户推荐相似或相关的商品。这有助于提高用户的购物体验,增加用户的购买意愿。 库存管理:商家可以利用这个API接口实时查询商品库存情况,以便及时调整销售策略,避免库存积压或缺货。 商品详情页面优化:在商
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
496 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
机器学习/深度学习 算法
【机器学习】揭秘反向传播:深度学习中神经网络训练的奥秘
【机器学习】揭秘反向传播:深度学习中神经网络训练的奥秘
|
Rust JavaScript 前端开发
将 Rust 程序编译为 WebAssembly 的知识与实践
本文记叙如何将一个 Rust 语言编译成可执行的 WebAssembly 文件。
583 0
|
Shell Linux 开发工具
kivy打包apk虚拟机搭建指南
这个文档其实是去年搭建虚拟机写的,因为各种原因一直没有发布出来,今天在Kivy中国开发者交流群(群号**534622543**)@lr大佬向我要这个,我于是下定决定把拖延症抢救下,对原来的文档稍作修正发布出来,希望对一心想要自己搭建打包环境却不得其法的朋友有一些帮助,也希望各位路过的大佬不吝赐教,不足之处望请斧正,如果能起到抛砖引玉的效果,本npc就很满足了。
|
机器学习/深度学习 开发者
机器学习在医疗图像分析中的应用:病灶检测和诊断
随着机器学习技术的迅猛发展,医疗图像分析领域也迎来了重大突破。机器学习在医学影像中的应用,尤其是病灶检测和诊断方面,已经取得了令人瞩目的成果。本文将深入探讨机器学习在医疗图像分析中的应用,重点关注病灶检测和诊断,以及相关的技术和挑战。
666 0
|
网络协议 Linux Windows
Linux下安装KDE桌面环境
Linux下安装KDE桌面环境
1318 0

热门文章

最新文章