/// <summary> /// 级联删除 /// </summary> /// <param name="usrIds"></param> public OperationResult DeleteWithRelations(int[] usrIds) { OperationResult result = new OperationResult(); if (usrIds == null || usrIds.Length < 1) { result.ResultType = OperationResultType.ParamError; result.Message = string.Format("{0}失败,{1}", Msg_DeleteWithRelations, "用户id不能为空"); return(result); } base.UnitOfWork.AutoCommit = false; try { base.UnitOfWork.BeginTransaction(); result = base.Delete(u => usrIds.Contains(u.Id)); if (result.ResultType != OperationResultType.Success) { base.UnitOfWork.Rollback(); return(result); } _usrRoleRelRepository.Delete(r => usrIds.Contains(r.UserId)); base.UnitOfWork.Commit(); result.ResultType = OperationResultType.Success; result.Message = Msg_DeleteWithRelations + "成功"; } catch (Exception ex) { base.UnitOfWork.Rollback(); base.ProcessException(ref result, Msg_DeleteWithRelations + "失败", ex); } return(result); }
/// <summary> /// 保存用户角色关联关系 /// </summary> /// <param name="roleIds">角色</param> /// <param name="usrIds">用户</param> /// <param name="delStrictly">是否精确删除(即是否按照roleId和usrId删除)</param> /// <returns></returns> private OperationResult SaveRelations(int[] roleIds, int[] usrIds, bool delStrictly) { OperationResult result = new OperationResult(); if (roleIds == null || roleIds.Length < 1) { result.ResultType = OperationResultType.ParamError; result.Message = Msg_Assign + "失败,roleIds不能为空"; return(result); } if (usrIds == null || usrIds.Length < 1) { result.ResultType = OperationResultType.ParamError; result.Message = Msg_Assign + "失败,usrIds不能为空"; return(result); } if (_usrRepository.Find(usr => usrIds.Contains(usr.Id) && usr.UserName == "admin").Count() > 0) { result.ResultType = OperationResultType.ParamError; result.Message = Msg_Assign + "失败,不能修改管理员的角色"; return(result); } /* * 1、删除指定用户指定角色 * 2、给指定用户添加新角色 */ var query = from usr in usrIds join role in roleIds on 1 equals 1 select new UserRoleRelation { UserId = usr, RoleId = role }; base.UnitOfWork.AutoCommit = false; base.UnitOfWork.BeginTransaction(); try { _usrRoleRelRepository.Delete(r => usrIds.Contains(r.UserId) && (delStrictly ? roleIds.Contains(r.RoleId) : true)); _usrRoleRelRepository.AddBatch(query.ToList()); base.UnitOfWork.Commit(); result.ResultType = OperationResultType.Success; } catch (Exception ex) { base.UnitOfWork.Rollback(); base.ProcessException(ref result, Msg_Assign + "失败", ex); } return(result); }