当前位置: 首页 > news >正文

局网站信息内容建设 自查报告云兰装潢公司总部地址电话

局网站信息内容建设 自查报告,云兰装潢公司总部地址电话,网站会员注册怎么做,ppt免费下载TransactionScope是.net平台基于的分布式事务组件#xff0c;它默认为本地事务#xff0c;同时当系统有需要时可以自动提升为分布式事务#xff0c;而对系统的前提是要开启MSDTC服务#xff0c;必要时需要在数据库服务器与应用服务器之间添加hosts的映射#xff0c;这些在… TransactionScope是.net平台基于的分布式事务组件它默认为本地事务同时当系统有需要时可以自动提升为分布式事务而对系统的前提是要开启MSDTC服务必要时需要在数据库服务器与应用服务器之间添加hosts的映射这些在之前已经写过很多文章了在这里不再说了。 在efcore平台时你使用TransactionScope将会出现异常微软会提示你去查看相关资料这回资料挺准https://docs.microsoft.com/en-us/ef/core/saving/transactions 本文章主要说了几点内容 默认的事务savechanges依旧是一个事务 单个上下文实现事务 不同上下文之间实现事务 一 savechanges依旧是一个事务 和之前的ef一样在进行saveChanges()操作时本身就是一个事务块而大叔仓储习惯把每个操作curd都有自己的saveChanges里而把数据上下文的savechanges对外隐藏所以如果你要对两个仓储进行insert操作时你需要添加一个外层的事务来保证数据一致性这时微软给出了解决方案。 二 单个上下文实现事务 对于一个数据上下文来说如果你是多个savechanges那么可以使用context.Database.BeginTransaction()来实现事务。 using (var context new BloggingContext())         {             using (var transaction context.Database.BeginTransaction())             {                 try                 {                     context.Blogs.Add(new Blog { Url http://blogs.msdn.com/dotnet });                     context.SaveChanges();                     context.Blogs.Add(new Blog { Url http://blogs.msdn.com/visualstudio });                     context.SaveChanges();                     var blogs context.Blogs                         .OrderBy(b b.Url)                         .ToList();                     // Commit transaction if all commands succeed, transaction will auto-rollback                     // when disposed if either commands fails                     transaction.Commit();                 }                 catch (Exception)                 {                     // TODO: Handle failure                 }             }         } 三 不同上下文之间实现事务 对于前面的TransactionScope来说如果是不同的数据上下文来说我们是无法实现事务操作的有些同学可以能说它应该被提升为分布式的但对于EF来说它是不同实现的但进行efcore时代之后这个问题得到了解决 Cross- only available when a relational database provider because it requires the use of DbTransaction and DbConnection, which are specific to relational databases. 上面说明可以实现一个跨数据上下文的事务只关系型数据库支持这个功能大叔认为非常必要但看它下面给出的实例是针对一个数据上下文的并不多个上下文的交 叉事务即并不是两个数据库之间的事务。 using (var context1 new BloggingContext(options))         {             using (var transaction context1.Database.BeginTransaction())             {                 try                 {                     context1.Blogs.Add(new Blog { Url http://blogs.msdn.com/dotnet });                     context1.SaveChanges();                     using (var context2 new BloggingContext(options))                     {                         context2.Database.UseTransaction(transaction.GetDbTransaction());                         var blogs context2.Blogs                             .OrderBy(b b.Url)                             .ToList();                     }                     // Commit transaction if all commands succeed, transaction will auto-rollback                     // when disposed if either commands fails                     transaction.Commit();                 }                 catch (Exception)                 {                     // TODO: Handle failure                 }             }         } 而如果真正使用多个上下文进行事务的话同样会出现问题 var options new DbContextOptionsBuilderDemoContext()                           .UseMySql(Serverlocalhost;DataBasetest2;UIDroot;Passwordroot;charsetutf8;port3306;SslModeNone)                           .Options;             using (var context new DemoContext(options))             {                 using (var transaction context.Database.BeginTransaction())                 {                     var user new UserInfo                     {                         AddTime DateTime.Now,                         Email testsina.com,                         UserName test                     };                     context.UserInfo.Add(user);                     context.SaveChanges();                     using (var context2 new TaxContext())                     {                         context2.Database.UseTransaction(transaction.GetDbTransaction());                         context2.UserInfo.Add(new UserInfo { AddTime DateTime.Now, Email tax_test, UserName tax });                         context2.SaveChanges();                     }                     transaction.Commit();                 }             } 出现下面异常告诉你你的数据库连接不是当前的连接 System.InvalidOperationException:“The specified transaction not associated with the current connection.Only transactions associated with the current connection may be used.” 不知道什么时候EF可以解决多数据库事务的问题当前你可以使用最终一致性的分布式事务来做这事不过我们还是一起期待中微软为我们提出更简单的解决方案一个事务 是否为分布式的应该看数据库所在服务器是否相同而不是数据库连接串是否一致 感谢微软这么完整的解释 原文地址http://www.cnblogs.com/lori/p/7659923.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.pierceye.com/news/678742/

相关文章:

  • 国产手机做系统下载网站七牛云做wordpress图床
  • 营销型网站建设网站百度文库账号登录入口
  • 医疗网站建设资讯国内十大游戏公司排名
  • 江苏网站建设网络公司男做基视频网站
  • 网站建设培训公司排名客户管理软件免费版
  • 甘肃省建设工程网上投标网站好玩的网游
  • 大学生网站建设课程总结唐四薪php网站开发答案
  • 郑州的网站建设公司有哪些企业策划案
  • 查询域名网站苏州专业网站seo推广
  • 游戏网站建设计划书梦织做网站
  • 电商运营公司简介seo搜索引擎优化求职简历
  • 烟台门户网站有哪些网站做的比较好的
  • 外贸企业论坛网站建设找建站公司做网站注意事项
  • 莱芜亓家网站网站认证怎么认证
  • 安康做网站的公司wordpress zh_cn.po
  • 温州网页网站制作怎么看一个网站有没有做301
  • 网站主流系统2018年网站建设
  • 好的交互网站sql网站发布流程
  • 河北住房与城乡建设部网站网站管理手册
  • 学网站建设需要用哪几个软件营销型网站建设的指导原则
  • 网站建设产品价格销售型网站如何做推广
  • 免费情感网站哪个好wordpress和微信打通
  • 做网站首页尺寸大小做网站的个人心得
  • 思乐科技 成都网站建设做单页网站价格
  • 网站关键词排名全掉了汽车用品网站
  • 网站未备案可以做经营活动吗做电商运营有前途吗
  • 网站建设优化服务百度指数与百度搜索量
  • 网站添加漂浮二维码怎么做内网 wordpress慢
  • h5创建网站网页设计主题推荐
  • 35开始学网站开发崇信县门户网