• 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;
            }
  • 相关阅读:
    C++---const
    qt--textEdit多行文本编辑框
    qt--QByteArray字节数组
    qt5--拖放
    qt5--自定义事件与事件的发送
    qt5--键盘事件
    qt5--鼠标事件
    qt5-事件过滤器
    qt5-event事件的传递
    qt-事件的接受和忽略
  • 原文地址:https://www.cnblogs.com/huyong/p/4207840.html
Copyright © 2020-2023  润新知