public async Task <DinazorResult> AssignRoleToRoleGroup(long idRole, long idRoleGroup) { var result = new DinazorResult(); // check role id var exists = _roleOperation.Exists(idRole); if (!exists.IsSuccess) { return(result); } if (!exists.Data) { result.Status = ResultStatus.NoSuchObject; return(result); } //check role group id exists = _roleGroupOperation.Exists(idRoleGroup); if (!exists.IsSuccess) { return(result); } if (!exists.Data) { result.Status = ResultStatus.NoSuchObject; return(result); } //so far so good using (var ctx = new DinazorContext()) { //already added var alreadyAdded = ctx.RelRoleRoleGroup.Any(l => l.IdRole == idRole && l.IdRoleGroup == idRoleGroup); if (alreadyAdded) { result.Status = ResultStatus.AlreadyAdded; return(result); } RelRoleRoleGroup roleRoleGroup = new RelRoleRoleGroup(); roleRoleGroup.IdRole = idRole; roleRoleGroup.IdRoleGroup = idRoleGroup; var willBeAdded = ctx.RelRoleRoleGroup.Add(roleRoleGroup); try { await ctx.SaveChangesAsync(); result.Success(); //result.ObjectId = willBeAdded; } catch (Exception e) { result.Status = ResultStatus.UnknownError; } } return(result); }