EF Core事务提交,分布式事务

控制事务

可以使用 DbContext.Database API 开始、提交和回滚事务。 以下示例显示了在单个事务中执行的两个 SaveChanges 操作以及一个 LINQ 查询:

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 failstransaction.Commit();
}
catch (Exception)
{// TODO: Handle failure
}

虽然所有关系数据库提供程序都支持事务,但在调用事务 API 时,可能会引发其他提供程序类型或不执行任何操作。

使用 System.Transactions

如果需要跨较大作用域进行协调,则可以使用环境事务。

using (var scope = new TransactionScope(TransactionScopeOption.Required,new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{using var connection = new SqlConnection(connectionString);connection.Open();try{// Run raw ADO.NET command in the transactionvar command = connection.CreateCommand();command.CommandText = "DELETE FROM dbo.Blogs";command.ExecuteNonQuery();// Run an EF Core command in the transactionvar options = new DbContextOptionsBuilder<BloggingContext>().UseSqlServer(connection).Options;using (var context = new BloggingContext(options)){context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });context.SaveChanges();}// Commit transaction if all commands succeed, transaction will auto-rollback// when disposed if either commands failsscope.Complete();}catch (Exception){// TODO: Handle failure}
}

还可以在显式事务中登记。

using (var transaction = new CommittableTransaction(new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{var connection = new SqlConnection(connectionString);try{var options = new DbContextOptionsBuilder<BloggingContext>().UseSqlServer(connection).Options;using (var context = new BloggingContext(options)){context.Database.OpenConnection();context.Database.EnlistTransaction(transaction);// Run raw ADO.NET command in the transactionvar command = connection.CreateCommand();command.CommandText = "DELETE FROM dbo.Blogs";command.ExecuteNonQuery();// Run an EF Core command in the transactioncontext.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });context.SaveChanges();context.Database.CloseConnection();}// Commit transaction if all commands succeed, transaction will auto-rollback// when disposed if either commands failstransaction.Commit();}catch (Exception){// TODO: Handle failure}
}

System.Transactions 的限制

  1. EF Core 依赖数据库提供程序以实现对 System.Transactions 的支持。 如果提供程序未实现对 System.Transactions 的支持,则可能会完全忽略对这些 API 的调用。 SqlClient 支持它。

  2. 自 .NET Core 2.1 起,System.Transactions 实现不包括对分布式事务的支持,因此不能使用 TransactionScope 或 CommittableTransaction 来跨多个资源管理器协调事务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303914.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTC 媒体流数据包丢包问题解决

最近在一个测试中&#xff0c;遇到了OCS和PSTN通话之间的声音出现严重的断续问题&#xff0c;用户的使用体验就是听对方的声音不是完整的&#xff0c;有部分的语音丢失&#xff0c;在服务器上判断就是RTC数据包丢失了。专业术语就是Voice clipping。先看看丢包的恐怖情况&#…

global.php,global.php

/*** 自动判断PHP版本&#xff0c;并把所有环境变量转为全局变量** author Avenger * version $Id 2003-05-18 13:01:14 $*/ function pmyoutput(&$a) {if (is_array($a)) {array_walk($a,"pmyoutput");} else {$a stripslashes($a);$a str_replace("&…

如何在 ASP.Net Core 中使用 Autofac

依赖注入可以有效的实现对象之间的 松耦合 并能够实现代码的可测试和可维护性&#xff0c;ASP.Net Core 提供了一个极简版的容器实现对 依赖注入 的原生支持&#xff0c;然而内置的依赖注入容器相比成熟的 依赖注入容器 太弱了。为了解决这个问题&#xff0c;可以使用第三方的依…

2010年11月编程语言排行榜:手机里的代码

【51CTO独家特稿】Tiobe今天发布了最新一期的编程语言排行榜。本期榜单的前五名与10月份没有明显变化&#xff0c;依然是Java、C、C、PHP和Python&#xff1b;Objective-C的增长势头强劲。本期另外一个值得注意的语言是重回前20名NXT-G。NXT-G是一种集成在乐高&#xff08;LEGO…

php网站开发期末大作业,大学生期末网页大作业

【实例简介】6页面的网页设计&#xff0c;是个人主页类型。包含了6个页面&#xff0c;包含视频、脚本等元素。水平不高&#xff0c;但交选修作业就足够了。【实例截图】【核心代码】为ai而狂└── 为ai而狂├── FLVPlayer_Progressive.swf├── Halo_Skin_3.swf├── Scri…

NET问答: 如何迭代 Enum ?

咨询区 Peter Mortensen&#xff1a;如何使用 C# 迭代 enum ?下面的代码会编译失败&#xff0c;错误信息: Suit is a type but is used like a variablepublic enum Suit {Spades,Hearts,Clubs,Diamonds }public void EnumerateAllSuitsDemoMethod() {foreach (Suit suit in S…

python hexdigest,Java方法,可以为Hex中的HMAC-SHA256提供与Python方法相同的输出

你确定你的密钥和输入是相同的,并在java和python中正确编码&#xff1f;HMAC-SHA256在两个平台上的工作方式相同.Java的Mac sha256_HMAC Mac.getInstance("HmacSHA256");SecretKeySpec secretKey new SecretKeySpec("1234".getBytes(), "HmacSHA256…

承接数字油画图稿/线条图定制(出图)业务

集异璧实验室对外提供数字油画图纸&#xff08;图稿/线条图&#xff09;定制和自选业务&#xff0c;欢迎洽谈。 定制流程&#xff1a; &#xff08;1&#xff09;贵方将图片传给我方&#xff1b; &#xff08;2&#xff09;我方出图&#xff0c;提供效果图&#xff1b; &#…

爬取异步请求(XHR/JS)数据方法

概述之前在做爬虫的时候&#xff0c;比如在爬取到https://www.1688.com/?spma261p.8650866.0.0.2dfa36c3tjLrCQ网页的时候&#xff0c;发现很多内容明明在浏览器看得见&#xff0c;但是请求下来的内容却没有&#xff0c;于是打开F12查看Network发现&#xff0c;如下&#xff1…

SQLServer支持大内存方案(转载)

转载自:http://user.qzone.qq.com/33524538?ptlang2052 SQLServer支持大内存方案 一、启动PAE支持; 方法&#xff1a;系统安装目录的根目录下有个系统隐藏文件&#xff1a;boot.int,加入/PAE参数 [boot loader] timeout30 defaultmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS…

php的old函数,laravel单元测试之phpUnit中old()函数报错解决

php 的 laravel单元测试之phpUnit中old()函数报错解决前言最近在做laravel单元测试.遇到了一个问题&#xff1a;当添加的view里面使用old()函数时就会报错,正常url访问没问题,但是在phpUnit中就报错错误原因: exception RuntimeException with message Session store not set o…

ASP.NET Core 集成 React SPA 应用

AgileConfig的UI使用react重写快完成了。上次搞定了基于jwt的登录模式&#xff08;AntDesign Pro .NET Core 实现基于JWT的登录认证&#xff09;&#xff0c;但是还有点问题。现在使用react重写后&#xff0c;agileconfig成了个确确实实的前后端分离项目。那么其实部署的话要分…

IBM在欧洲启动“智能云”研发计划

据国外媒体报道&#xff0c;IBM今日宣布将与15个欧洲合作伙伴启动一项联合研究项目&#xff0c;其中包括标准组织以及电信、医疗和媒体行业的企业一起开发一种基于目标的、标准化的“智能云”存储架构。 IBM表示&#xff0c;此次合作的目的是改善富媒体数据和存储服务跨国界跨厂…

etcd php,etcd集群备份和数据恢复

etcd是一个分布式k-v数据库&#xff0c;在kubernetes中使用其管理集群的元数据。这里介绍etcd集群数据的备份和数据恢复的方法和步骤。快照定期备份crontab定期执行备份脚本&#xff0c;每半小时备份一次&#xff0c;本地、异地都备份(暂定&#xff1a;本地备份保留最近10个备份…

Ingress-nginx工作原理和实践

本文记录/分享 目前项目的 K8s 部署结构和请求追踪改造方案这个图算是一个通用的前后端分离的 k8s 部署结构:Nginx Ingress 负责暴露服务(nginx前端静态资源服务)&#xff0c; 根据十二要素应用的原 则&#xff0c;将后端 api 作为 nginx 服务的附加动态资源。Ingress vs Ingre…

oracle 查看用户状态,Oracle数据库查看用户状态

一、当前ORACLE用户的状态可查看视图DBA_USERS;一般情况下在使用的正常用户均处于OPEN状态。select username,account_status from dba_users;二、ORACLE数据库用户有多种状态&#xff0c;可查看视图USER_ASTATUS_MAP。select * from user_astatus_map;九种状态可分为两类&…

Dotnet洋葱架构实践

一个很清晰的架构实践&#xff0c;同时刨刨MySQL的坑。一、洋葱架构简介洋葱架构出来的其实有一点年头了。大约在2017年下半年&#xff0c;就有相关的说法了。不过&#xff0c;大量的文章在于理论性的讨论&#xff0c;而我们今天会用一个项目来完成这个架构。洋葱架构&#xff…

显示桌面,原来这么简单的

显示桌面的按钮其实很简单,我也是无意中发现的,代码如下,复制到记事本中,另存为.scf文件,文件名随便去,双击即可看看效果,^_^[Shell]Command2IconFileexplorer.exe,3[Taskbar]CommandToggleDesktop转载于:https://www.cnblogs.com/crid/archive/2010/11/28/5172732.html

php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程

面向对象设计是php程序开发中一个很重要的内容块&#xff0c;如果你想成为高级php程序员我们必须知道面向对象设计具体用法与写法。维护简单 模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类&#xff0c;我们可以在名字空间中添加一个类而不…

EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录

前言本文主要是讲解EF Core3.0 通过拦截器实现读写分离与SQL日志记录注意拦截器只有EF Core3.0 支持,2.1请考虑上下文工厂的形式实现.说点题外话..一晃又大半年没更新技术博客..唉,去年一年发生了太多事情..博主真的 一言难尽..有兴趣的可以去看看:记录一下,也许是转折,也许是结…