RDIFramework.NET 框架相容各種資料庫型別事務使用範例參考
阿新 • • 發佈:2018-12-30
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; }