天天看點

RDIFramework.NET 架構相容各種資料庫類型事務使用範例參考

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chinahuyong/article/details/42489361

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

作者: 

EricHu

出處:

http://blog.csdn.net/chinahuyong  http://www.cnblogs.com/huyong/

Email:

[email protected]

QQ交流:406590790 

QQ群:237326100 

架構部落格:

http://blog.csdn.net/chinahuyong http://www.cnblogs.com/huyong RDIFramework.NET

,基于.NET的快速資訊化系統開發、整合架構,給使用者和開發者最佳的.Net架構部署方案。 

關于作者:進階工程師、資訊系統項目管理師、DBA。專注于微軟平台項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及資料庫領域有一定的造詣。現主要從事基于 

 架構的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。 

如有問題或建議,請多多賜教! 

本文版權歸作者和CSDN共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過郵箱或QQ 聯系我,非常感謝。