public async Task <BaseResponse <string> > Put([FromBody] UserInfo userInfo) { // 这里使用事务处理 var data = new BaseResponse <string>(); try { if (userInfo != null && userInfo.Id > 0) { if (userInfo.RIDs.Count > 0) { _unitOfWork.BeginTran(); // 无论 Update Or Add , 先删除当前用户的全部 U_R 关系 var usreroles = (await _userRoleServices.Query(d => d.UserId == userInfo.Id)).Select(d => d.RoleId.ToString()).ToArray(); if (usreroles.Count() > 0) { var isAllDeleted = await _userRoleServices.DeleteByIds(usreroles); } // 然后再执行添加操作 var userRolsAdd = new List <UserRole>(); userInfo.RIDs.ForEach(async rid => { await _userRoleServices.Add(new UserRole((int)userInfo.Id, rid));; }); } var success = await _sysUserInfoServices.Update(userInfo); _unitOfWork.CommitTran(); if (success) { data.Msg = "更新成功"; } } } catch (Exception ex) { _unitOfWork.RollbackTran(); //_logger.LogError(ex, ex.Message); } return(data); }