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;
}
作者: EricHu
出处: 
Email: [email protected]
QQ 交流:406590790 
平台博客:
 关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,精通DotNet,DB(SqlServer、Oracle等)技术。熟悉Java、Delhpi及Linux操作系统,有扎实的网络知识。在面向对象、面向服务以及数据库领域有一定的造诣。现从事DB管理与开发、WinForm、WCF、WebService、网页数据抓取以及ASP.NET等项目管理、开发、架构等工作。
如有问题或建议,请多多赐教!
本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。

技术分享


本文出自 “.NET快速开发框架” 博客,请务必保留此出处http://yonghu.blog.51cto.com/8166136/1600509

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。