广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何理解EF Core事务提交
  • 803
分享到

如何理解EF Core事务提交

2024-04-02 19:04:59 803人浏览 独家记忆
摘要

本篇内容主要讲解“如何理解EF Core事务提交”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解EF Core事务提交”吧!控制事务可以使用 DbCont

本篇内容主要讲解“如何理解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<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 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<BloggingContext>()             .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 的限制

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

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

到此,相信大家对“如何理解EF Core事务提交”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何理解EF Core事务提交

本文链接: https://www.lsjlt.com/news/83375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解EF Core事务提交
    本篇内容主要讲解“如何理解EF Core事务提交”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解EF Core事务提交”吧!控制事务可以使用 DbCont...
    99+
    2022-10-19
  • 如何理解mysql隐式提交事务transaction
    如何理解mysql隐式提交事务transaction,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。隐式提交事务概述  事务是一个完整...
    99+
    2022-10-18
  • 如何理解MySQL层事务提交流程
    如何理解MySQL层事务提交流程,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。部分栈帧:prepare栈帧(gdb) bt #0&n...
    99+
    2022-10-18
  • 怎么理解MySQL事务两段式提交
    本篇内容主要讲解“怎么理解MySQL事务两段式提交”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解MySQL事务两段式提交”吧!⒈两段式提交的目的:解决参...
    99+
    2022-10-18
  • mysql事务未提交导致锁等待如何解决
    1、实验环境Myql版本5.7.17-log实验表结构(root@localhost)[apex]> show create table test; +----...
    99+
    2022-10-18
  • 怎么理解sqlserver禁止management studio的自动提交事务
    这篇文章将为大家详细讲解有关怎么理解sqlserver禁止management studio的自动提交事务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。自动...
    99+
    2022-10-18
  • 解决Oracle模拟事务提交、表锁,处理表锁问题
    目录oracle模拟事务提交、表锁,处理表锁问题1.查看AutoCommit2.手动提交事务流程2.1 终端一 尚未commit2.2 终端二 查询2.3 终端一 commit2.4 终端二 查询3.模拟表锁3.1 在终...
    99+
    2022-09-27
  • 如何理解MYSQL-GroupCommit 和 2pc提交
    这篇文章将为大家详细讲解有关如何理解MYSQL-GroupCommit 和 2pc提交,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 组提交(gr...
    99+
    2022-10-19
  • 浅谈MySQL中是如何实现事务提交和回滚的
    目录什么是事务redo logundo log总结一下什么是事务 事务是由数据库中一系列的访问和更新组成的逻辑执行单元 事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,...
    99+
    2022-11-13
  • 如何理解Spring双层事务
    这篇文章主要讲解了“如何理解Spring双层事务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Spring双层事务”吧!系统 A 调用系统 B 执行数据同步,系统 B 返回了错误提示...
    99+
    2023-06-15
  • 如何深入理解Redis事务
    本篇内容主要讲解“如何深入理解Redis事务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何深入理解Redis事务”吧!Redis可以看成NoSQL类型的数据...
    99+
    2022-10-18
  • 如何理解MySQL中的事务
    今天就跟大家聊聊有关如何理解MySQL中的事务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。事务又叫做TCL,全称是transaction cont...
    99+
    2022-10-19
  • 如何理解分布式事务
    本篇内容主要讲解“如何理解分布式事务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解分布式事务”吧!事务要说分布式事务,首先...
    99+
    2022-10-19
  • 如何理解Oracle的INITRANS与事务
    本篇文章给大家分享的是有关如何理解Oracle的INITRANS与事务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 Oracle的INIT...
    99+
    2022-10-19
  • 如何理解Java分布式事务
    今天小编给大家分享一下如何理解Java分布式事务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2022-10-19
  • 分布式事务该如何理解
    这篇文章给大家介绍分布式事务该如何理解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。先上场景:压力测试,同时1万个买家在店铺Shang1购买东西,每个买家账户向shang1账户付钱。    &nbs...
    99+
    2023-06-02
  • 如何理解Spring的Hibernate事务管理机制
    如何理解Spring的Hibernate事务管理机制,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。主要讲了Spring 声明式事务让我们从复杂的Hibernate事务处理中...
    99+
    2023-06-17
  • 分布式事务使用Seata的AT事务模式如何理解
    分布式事务使用Seata的AT事务模式如何理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。项目使用了微服务,并且将一些模块进行了拆分,现在遇到了一个批量保存的场景,而且还...
    99+
    2023-06-19
  • 如何用Mybatis源码解析事务管理
    如何用Mybatis源码解析事务管理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Mybatis事务管理我们可以在mybatis-config.xml中配置事务管理器的实现...
    99+
    2023-06-22
  • 如何理解MySQL中的事务隔离级别
    这篇文章给大家介绍如何理解MySQL中的事务隔离级别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。很多小伙伴对 MySQL 的隔离级别一直心存疑惑,其实这个问题一点都不难,关键看怎么讲...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作