返回顶部
首页 > 资讯 > 前端开发 > 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://lsjlt.com/news/83375.html(转载时请注明来源链接)

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

猜你喜欢
  • 如何理解EF Core事务提交
    本篇内容主要讲解“如何理解EF Core事务提交”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解EF Core事务提交”吧!控制事务可以使用 DbCont...
    99+
    2024-04-02
  • 如何理解MySQL层事务提交流程
    如何理解MySQL层事务提交流程,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。部分栈帧:prepare栈帧(gdb) bt #0&n...
    99+
    2024-04-02
  • 如何理解mysql隐式提交事务transaction
    如何理解mysql隐式提交事务transaction,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。隐式提交事务概述  事务是一个完整...
    99+
    2024-04-02
  • EF Core如何通过显式编译提高查询性能
    这篇文章主要讲解了“EF Core如何通过显式编译提高查询性能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“EF Core如何通过显式编译提高查询性能”吧!在介绍具体内容...
    99+
    2023-06-29
  • 怎么理解MySQL事务两段式提交
    本篇内容主要讲解“怎么理解MySQL事务两段式提交”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解MySQL事务两段式提交”吧!⒈两段式提交的目的:解决参...
    99+
    2024-04-02
  • 详解Spring事务回滚和事务提交
    目录事务回滚事务提交事务回滚 回滚逻辑如下: 判断是否存在事务,只有存在事务才执行回滚 根据异常类型判断是否回滚。如果异常类型不符合,仍然会提交事务 回滚处理 ...
    99+
    2024-04-02
  • mysql事务未提交导致锁等待如何解决
    1、实验环境Myql版本5.7.17-log实验表结构(root@localhost)[apex]> show create table test; +----...
    99+
    2024-04-02
  • MySQL事务处理:自动提交与手动提交的区别
    MySQL事务处理:自动提交与手动提交的区别 在MySQL数据库中,事务是一组SQL语句的集合,要么全部执行成功,要么全部执行失败,保证了数据的一致性和完整性。在MySQL中,事务可以...
    99+
    2024-04-02
  • 如何理解MYSQL-GroupCommit 和 2pc提交
    这篇文章将为大家详细讲解有关如何理解MYSQL-GroupCommit 和 2pc提交,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 组提交(gr...
    99+
    2024-04-02
  • PostgreSQL 源码解读(123)- MVCC#8(提交事务-实际提交过程)
    本节介绍了PostgreSQL提...
    99+
    2024-04-02
  • jQuery如何监听表单提交事件?
    这篇文章将为大家详细讲解有关jQuery如何监听表单提交事件?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery 监听表单提交事件 为了在表单提交时执行特定功能,jQuery 提供了多种方法来监听...
    99+
    2024-04-02
  • 分布式事务CAP两阶段提交及三阶段提交详解
    目录1关于分布式系统1.1介绍1.2优势和不足2分布式事务2.1CAP理论2.2CAP的组合情况2.3数据一致性模型2.4分布式事务应用场景2.4.1典型支付场景2.4.2 ...
    99+
    2024-04-02
  • 怎么理解sqlserver禁止management studio的自动提交事务
    这篇文章将为大家详细讲解有关怎么理解sqlserver禁止management studio的自动提交事务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。自动...
    99+
    2024-04-02
  • core sync该如何理解
    这篇文章跟大家分析一下“core sync该如何理解”。内容详细易懂,对“core sync该如何理解”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“core sync该如何理解”...
    99+
    2023-06-28
  • 解决Oracle模拟事务提交、表锁,处理表锁问题
    目录oracle模拟事务提交、表锁,处理表锁问题1.查看AutoCommit2.手动提交事务流程2.1 终端一 尚未commit2.2 终端二 查询2.3 终端一 commit2.4 终端二 查询3.模拟表锁3.1 在终...
    99+
    2024-04-02
  • MySQL未提交事务造成的等待事件怎么解决
    本篇内容主要讲解“MySQL未提交事务造成的等待事件怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL未提交事务造成的等待事件怎么解决”吧! ...
    99+
    2024-04-02
  • 浅谈MySQL中是如何实现事务提交和回滚的
    目录什么是事务redo logundo log总结一下什么是事务 事务是由数据库中一系列的访问和更新组成的逻辑执行单元 事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,...
    99+
    2024-04-02
  • 如何理解.NET Core Dto映射
    如何理解.NET Core Dto映射,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们假设一个场景, 采用EF Core+Web Api, 这时候可能会出现E...
    99+
    2023-06-05
  • MySQL中Spring管理的事务开启后不提交引起的事故
    1. 前言 了解到一个事故,在MySQL数据库中,使用Spring管理的事务在开启以后没有在操作结束时提交或回滚,使得原有线程在后续执行数据库操作时可能继续使用原有事务,且不会提交,导致对数据库的修改...
    99+
    2023-09-03
    spring mysql java
  • 如何在PHP中处理表单提交
    随着互联网的不断发展,表单作为一种基本的交互方式,在Web开发中扮演着非常重要的角色。而在PHP中,处理表单提交是必不可少的一项技能。本文将介绍如何在PHP中处理表单提交,并对常见的表单验证问题给出解决方案。一、表单提交的基本流程在处理表单...
    99+
    2023-05-21
    表单 PHP 提交处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作