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;
        }
复制代码

 

posted @   .NET快速开发框架  阅读(931)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示