zoukankan      html  css  js  c++  java
  • RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考

    RDIFramework.NET 框架兼容各种数据库类型事务使用范例参考

      RDIFramwork.NET框架对数据库的事务做了很好的控制,对多表或多条语句需要在同一事务执行提供了很好的支持,同时支持任意主流类型的数据库,下面的代码可以给用户做为参考。用户可以任意扩展使用。

      1、传入实体执行执行事务测试

    private bool InEntityTransactionTest(string mainId,string detailId)
    {
        //可以支持任意流行数据库类型,指定相关的数据库提供者即可(OracleProvider、SqlProvider、SqLiteProvider、MySqlProvider、DB2Provider、OleDbProvider)
        IDbProvider dbProvider = new OracleProvider(SystemInfo.BusinessDbConnectionString);
        bool result = true;
        try
        {
            dbProvider.BeginTransaction();
            //主表
            CASE_PRODUCTIN_MAINManager manager = new CASE_PRODUCTIN_MAINManager(dbProvider, Utils.UserInfo);
            CASE_PRODUCTIN_MAINEntity mainEntity = manager.GetEntity(dbProvider.SqlSafe(mainId));
            manager.Delete(mainEntity);
            //子表
            CASE_PRODUCTIN_DETAILManager detailManager = new CASE_PRODUCTIN_DETAILManager(dbProvider, Utils.UserInfo);
            CASE_PRODUCTIN_DETAILEntity detailEntity = detailManager.GetEntity(dbProvider.SqlSafe(detailId));
            detailManager.Delete(detailEntity);
            //事务提交 
            dbProvider.CommitTransaction();
        }
        catch (Exception ex)
        {
            //事务回滚
            dbProvider.RollbackTransaction();
            result = false;
        }
        return result;
    }

      2、传入Sql语句事务测试

    private bool InSqlTransactionTest(string mainId, string detailId)
            {
                //可以支持任意流行数据库类型,指定相关的数据库提供者即可(OracleProvider、SqlProvider、SqLiteProvider、MySqlProvider、DB2Provider、OleDbProvider)
    
                IDbProvider dbProvider = new SqlProvider(SystemInfo.BusinessDbConnectionString);
                bool result = true;
                try
                {
                    dbProvider.BeginTransaction();
                    //主表
                    string sqlMain = string.Format("DELETE FROM CASE_PRODUCTIN_MAIN WHERE ID = {0}", mainId);
                    dbProvider.ExecuteNonQuery(sqlMain);
                    //子表
                    string sqlDetail = string.Format("DELETE FROM CASE_PRODUCTIN_DETAIL WHERE ID = {0}", detailId);
                    dbProvider.ExecuteNonQuery(sqlMain);
                    //事务提交 
                    dbProvider.CommitTransaction();
                }
                catch (Exception ex)
                {
                    //事务回滚
                    dbProvider.RollbackTransaction();
                    result = false;
                }
                return result;
            }
  • 相关阅读:
    Elasticsearch使用记录
    Python程序打包成exe的一些坑
    Django的基础操作总结
    社会工程学的基本理论和基本应用
    ceph分布式存储系统初探
    简单个人信息安全模型
    基于socket.io客户端与服务端的相互通讯
    使用node建立本地服务器访问静态文件
    java 03 数组
    java 04 面向对象
  • 原文地址:https://www.cnblogs.com/huyong/p/4207840.html
Copyright © 2011-2022 走看看