.Net Core - 使用事务IDbtransaction操作DBData
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(); //事务执行完要关闭连接 } }
分类:
3001-.NET Core
, 1001-C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现