/// <summary> /// ユーザーのロールを削除する /// </summary> /// <param name="ldapUser"></param> /// <param name="role"></param> /// <returns></returns> public Task RemoveFromRoleAsync(LdapUser ldapUser, string roleName) { try { using (RMUserDbContext context = new RMUserDbContext()) { //指定されたロールを取得 var role = context.LdapUserRoles .Where(r => r.Name == roleName) .SingleOrDefault(); if (role == null) { throw new NotFoundLdapUserRoleException( string.Format("Role: '{0}' is not found.", roleName)); } //既にメンバーに存在しない場合はそのまま抜ける LdapUserRoleMember roleMember = role.Members .Where(m => m.LdapId == ldapUser.Id) .SingleOrDefault(); if (roleMember == null) { return(Task.Delay(0)); } //該当するメンバーを削除 role.Members.Remove(roleMember); context.SaveChanges(); return(Task.Delay(0)); } } catch (Exception e) { throw e; } }