如何理解EF Core事务提交
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"如何理解EF Core事务提交",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解EF Core事务提交"吧!控制事务可以使用 DbC
千家信息网最后更新 2026年11月03日如何理解EF Core事务提交
本篇内容主要讲解"如何理解EF Core事务提交",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解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 fails transaction.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 transaction var command = connection.CreateCommand(); command.CommandText = "DELETE FROM dbo.Blogs"; command.ExecuteNonQuery(); // Run an EF Core command in the transaction var options = new DbContextOptionsBuilder() .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 fails scope.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() .UseSqlServer(connection) .Options; using (var context = new BloggingContext(options)) { context.Database.OpenConnection(); context.Database.EnlistTransaction(transaction); // Run raw ADO.NET command in the transaction var command = connection.CreateCommand(); command.CommandText = "DELETE FROM dbo.Blogs"; command.ExecuteNonQuery(); // Run an EF Core command in the transaction context.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 fails transaction.Commit(); } catch (Exception) { // TODO: Handle failure } } System.Transactions 的限制
EF Core 依赖数据库提供程序以实现对 System.Transactions 的支持。 如果提供程序未实现对 System.Transactions 的支持,则可能会完全忽略对这些 API 的调用。 SqlClient 支持它。
自 .NET Core 2.1 起,System.Transactions 实现不包括对分布式事务的支持,因此不能使用 TransactionScope 或 CommittableTransaction 来跨多个资源管理器协调事务。
到此,相信大家对"如何理解EF Core事务提交"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
事务
支持
程序
内容
数据
数据库
学习
查询
实用
更深
较大
两个
作用
兴趣
分布式
单个
多个
实用性
实际
操作简单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
湖北九亚互联网络科技有限公司
为想互联网科技怎么样
科技互联网项目
与互联网科技公司
互联网 科技公司
金融科技与互联网金融
互联网 的科技创新
紫鲸互联网科技
朗涯互联网科技
云电互联网科技
万达互联网科技
深圳艾佳互联网科技
互联网金融科技委员会
全球顶尖互联网科技公司
互联网科技和信息
国产互联网科技公司
同城互联网络科技
广西泛欧互联网科技有限公司
安徽九吞吴互联网科技有限公司
广州为想互联网科技有限公司
壕鑫互联网络科技
广州善班互联网科技
互联网科技网站
互联网金融科技委员会
汽车互联网创新科技园
广西互联网科技孵化中心
科技类公司包括互联网吗
保山浩联互联网科技有限公司
平安好医生打造互联网科技医疗