• TransactionScope数据库事务处理


    .Net访问数据库事务处理,大家首先想到是SqlTransaction。但在使用过程中你会发现其缺点:

    1. 事务只能位于一个逻辑块下,(不能将多个函数:执行sql放置在一个事务中)
    2. 不能用于两个多个数据库间事务处理

    TranscationScope

    TranscationScope很好地解决了上述问题,先看怎么使用:
    添加程序集System.Transactions

    再看一种提倡的代码结构

    		public void ExecSQL()
    		{
    			using(TransactionScope tran = new TransactionScope())
    			{
    				//执行第一个数据库命令
    				using(SqlConnection con1 = new SqlConnection("connectionString1"))
    				{
    					SqlCommand cmd = new SqlCommand("update", con1);
    					con1.Open();
    					cmd.ExecuteNonQuery();
    				}
    				//执行第二个数据库命令(可以连接不同的库)
    				using (SqlConnection con2 = new SqlConnection("connectionString2"))
    				{
    					SqlCommand cmd = new SqlCommand("update", con2);
    					con2.Open();
    					cmd.ExecuteNonQuery();
    				}
    				//事件操作代码
    				tran.Complete();
    			}
    		}
    

    事务嵌套的处理

    创建事务TransactionScope可以选择TransactionScopeOption类型参数。
    TransactionScopeOption枚举类型由三种指分别为:

    • Required 如果已经存在环境事务,则使用该环境事务。否则,在进入范围之前创建新的事务(事务嵌套时,可利用环境的事务)
    • RequiresNew总是创建新的事务
    • Suppress 事务取消时会保留其内的操作,一般用于写入日志,操作执行失败数据回滚但希望写入日志错误信息。
  • 相关阅读:
    非常实用的php各种文件操作函数
    两个自用的Dota2 自走棋辅助工具:阵容模拟器与UI Mod插件
    Scratch 数字游戏
    初识Scratch 3.0
    何时重头来
    cocos2d-x 3.0 Armature jsb 初体验
    cocosbuilder中的Callbacks和sound effects
    cocos2dx js文件加密为jsc文件
    cocos2dx jsb 在IOS与安卓下的一些不同之处
    安卓打包记录
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/9118208.html
Copyright © 2020-2023  润新知