New一个流程

  • 获取数据库连接字符串,实例化SqlConnection
  • 打来数据库连接
  • Begin当前连接的事务(IDbTransaction)
  • 操作数据库(操作数据库的时候一定要使用当前连接和事务修改数据)
  • 符合预期Commit,不符合预期Rollback
  • 关闭数据库连接

1.获取连接字符串

一般连接字符串的配置会放在appsetting.json文件中

{
"ConnectionStrings": {
//
"DbConn": "Server=Servername;Integrated Security=no;User ID=account;PWD=pwd;initial catalog=DBname;MultipleActiveResultSets=true;Max Pool Size=1024;Min Pool Size=10;Pooling=true;"
}
}

可以直接在startup.cs的服务配置中直接获取配置信息

 public class Startup
{
public Startup(IConfiguration configuration) //依赖注入
{
_configuration = configuration;
} public IConfiguration _configuration { get; } // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{ string _conn;
try
{ //获取连接字符串配置信息
_conn = _configuration.GetConnectionString("DBConn");
}
catch (Exception ex)
{
throw new Exception($"Database connection initialization failed: {ex.Message}{ex.StackTrace}");
} //将获取的信息配置到Appconfigurer.cs文件中
AppConfigurer.Config(_conn); }

在AppConfigurer.cs文件中创建一个静态类AppConfigurer

public static class AppConfigurer
{
public static string _DbStr = string.Empty;
//初始化SqlConnection信息
public static SqlConnection DbConnection => new SqlConnection(_DbStr); public static void Config(string strConn) //这个方法会在项目启动文件的服务配置中调用
{
if (string.IsNullOrEmpty(strConn))
throw new Exception("AppConfigurer.Config :: Invalid parameter"); _DbStr = strConn;
RefreshConfig(); //这个方法内可以初始化各种配置信息
} }

2.使用IDntransaction(事务)

public static void UseTransTest()
{ var tempConn= AppConfigurer.DbConnection;
//这里因为在配置文件中实例过SqlConnection 所以可以直接调用SqlConnection的Open方法
//否则需要 var tempConn=new SqlConnection(_connString);
tempConn.Open(); //事务直指定打开的连接
IDbTransaction trans = tempConn.BeginTransaction(); //开启连接的事务 try
{
InsertOM.Create(tempConn, request,trans);//需要把SqlConnection实例和IDbTransaction实例传入ORM对DB的操作 //执行完所有的DB操作没有出错就提交事务
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
}
finally
{
if (tempConn.State != ConnectionState.Closed)
tempConn.Close(); //事务执行完要关闭连接
}
}

.Net Core - 使用事务IDbtransaction操作DBData的更多相关文章

  1. asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案

    之前碰到asp.net core异步进行新增操作并且需要判断某些字段是否重复的问题,进行插入操作的话会导致数据库中插入重复的字段!下面把我的解决方法记录一下,如果对您有所帮助,欢迎拍砖! 场景:EFC ...

  2. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  3. Intel Core i7的整体操作

    Intel Core i7的整体操作(我们也称呼为Nehalem,他的项目代码名) 主要分成2个部分-指令控制单元Instruction Control Unit(ICU),负责从存储器读出指令序列, ...

  4. 一步步学习EF Core(2.事务与日志)

    前言 上节我们留了一个问题,为什么EF Core中,我们加载班级,数据并不会出来 其实答案很简单,~ 因为在EF Core1.1.2 中我们在EF6.0+中用到的的延迟加载功能并没有被加入,不过在EF ...

  5. 事务之使用JDBC进行事务的操作2

    本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...

  6. .NET Core中使用Dapper操作Oracle存储过程最佳实践

    为什么说是最佳实践呢?因为在实际开发中踩坑了,而且发现网上大多数文章给出的解决方法都不能很好地解决问题.尤其是在获取类型为OracleDbType.RefCursor,输出为:ParameterDir ...

  7. [转]一步步学习EF Core(2.事务与日志)

    本文转自:http://www.cnblogs.com/GuZhenYin/p/6862505.html 上节我们留了一个问题,为什么EF Core中,我们加载班级,数据并不会出来 其实答案很简单,~ ...

  8. ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作

    ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...

  9. 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作

    ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...

随机推荐

  1. Java四大引用详解:强引用、软引用、弱引用、虚引用

    面试官考察Java引用会问到强引用.弱引用.软引用.虚引用,具体有什么区别?本篇单独来详解 @mikechen Java引用 从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活 ...

  2. MapReduce入门实战

    MapReduce 思想 MapReduce 是 Google 提出的一个软件架构,用于大规模数据集的并行运算.概率"Map(映射)"和"Reduce(归约)" ...

  3. 不想当Window的Dialog不是一个好Modal,弹窗翻身记

    弹窗是我们熟视无睹的一种交互方式,经常用到,但从没好好想过这种交互行为背后的意义... 弹窗是Windows的灵魂 Windows的灵魂是什么?当然是Window,当方便快捷的多窗口进入人们视野的时候 ...

  4. eBackup备份服务器安装及配置

    ####### 原博客地址 创建虚拟机 选择第一个 分配硬盘 其余默认 导入压缩包安装eBackup备份软件 用户名root 密码Cloud12#$ 查看ip地址 连接xftp导入包 安装备份软件 # ...

  5. 【读书笔记】C#高级编程 第二十一章 任务、线程和同步

    (一)概述 所有需要等待的操作,例如,因为文件.数据库或网络访问都需要一定的时间,此时就可以启动一个新的线程,同时完成其他任务. 线程是程序中独立的指令流. (二)Paraller类 Paraller ...

  6. EntityFrameworkCore 模型自动更新(下)

    话题 上一篇我们讨论到获取将要执行的迁移操作,到这一步为止,针对所有数据库都通用,在此之后需要生成SQL脚本对于不同数据库将有不同差异,我们一起来瞅一瞅 SQLite脚本生成差异 在上一篇拿到的迁移操 ...

  7. windows清理必看

    清理缓存 代码如下 介绍此文件夹都是缓存文件全选删除即可 ctrl+A全选shift+del强制删除(不会添加到回收站) %temp% 找到C盘右击属性选择想要删除的文件进行清理即可 清理完点击清理系 ...

  8. 【gRPC】C++异步服务端客户端API实例及代码解析

    对于同步API而言,程序的吞吐量并不高.因为在每次发送一个gRPC请求时,会阻塞整个线程,必须等待服务端的ack回到客户端才能继续运行或者发送下一个请求,因此异步API是提升程序吞吐量的必要手段. g ...

  9. Rust-函数

    函数结构 函数要点 函数名和变量名使用蛇形命名法(snake case),例如 fn add_two() -> {} 函数的位置可以随便放,Rust 不关心我们在哪里定义了函数,只要有定义即可 ...

  10. logstash中output{}的另类写法

    日志传输路径如下: filebeat->redis->logstash->es 在filebeat配置文件中,收集日志的时候配置的有如下参数: fields: log_source: ...