C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 主细表事务处理的标准例子...

要么就一次全成功,要么就一次全失败,插入主表的同时插入关联的子表,主表插入时返回当前插入的主键,字表插入时用这个主键做关联。

参考代码如下:

/// <summary>
        /// 添加角色(同时添加用户,一个数据库事务里进行处理)
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="entity">实体</param>
        /// <param name="userIds">用户主键数组</param>
        /// <param name="statusCode">返回状态码</param>
        /// <param name="statusMessage">返回状态信息</param>
        /// <returns>主键</returns>
        public string AddWithUser(BaseUserInfo userInfo, BaseRoleEntity entity, string[] userIds, out string statusCode, out string statusMessage)
        {
            var parameter = ServiceParameter.CreateWithMessage(userInfo
                , MethodBase.GetCurrentMethod()
                , this.serviceName
                , AppMessage.RoleService_Add);

            string result = string.Empty;
            string returnCode = string.Empty;
            string returnMessage = string.Empty;
            ServiceUtil.ProcessUserCenterWriteDbWithTransaction(userInfo, parameter, (dbHelper) =>
            {
                // 这里是判断已经登录的用户是否有调用当前函数的权限,加强服务层被远程调用的安全性的
                var permissionManager = new BasePermissionManager(userInfo);
                if (permissionManager.CheckPermissionByUser(userInfo.Id, "RoleAdmin.Add", "添加角色"))
                {
                    string tableName = userInfo.SystemCode + "Role";
                    var manager = new BaseRoleManager(dbHelper, userInfo, tableName);
                    result = manager.Add(entity, out returnCode);
                    if (!string.IsNullOrEmpty(result) && userIds != null && userIds.Length > 0)
                    {
                        tableName = userInfo.SystemCode + "UserRole";
                        var userManager = new BaseUserManager(dbHelper, userInfo, tableName);
                        // 小心异常,检查一下参数的有效性
                        if (userIds != null)
                        {
                            userManager.AddToRole(userIds, result);
                        }
                    }
                    returnMessage = manager.GetStateMessage(returnCode);
                }
            });
            statusCode = returnCode;
            statusMessage = returnMessage;
            return result;
        }

 

 

转载于:https://my.oschina.net/iwenr/blog/227560

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值