1. 程式人生 > >RDIFramework.NET 框架相容各種資料庫型別事務使用範例參考

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;
        }