diff --git a/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/UserStore.cs b/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/UserStore.cs index ddfb80eec5..f1cc50a9dc 100644 --- a/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/UserStore.cs +++ b/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore/UserStore.cs @@ -239,6 +239,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore /// public IdentityErrorDescriber ErrorDescriber { get; set; } + private DbSet UsersSet { get { return Context.Set(); } } private DbSet Roles { get { return Context.Set(); } } private DbSet UserClaims { get { return Context.Set(); } } private DbSet UserRoles { get { return Context.Set(); } } @@ -472,7 +473,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); var id = ConvertIdFromString(userId); - return Users.FirstOrDefaultAsync(u => u.Id.Equals(id), cancellationToken); + return UsersSet.FindAsync(new object[] { id }, cancellationToken); } /// @@ -496,7 +497,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore /// An representation of the provided . public virtual string ConvertIdToString(TKey id) { - if (Object.Equals(id, default(TKey))) + if (object.Equals(id, default(TKey))) { return null; } @@ -523,7 +524,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore /// public virtual IQueryable Users { - get { return Context.Set(); } + get { return UsersSet; } } /// @@ -624,7 +625,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore var roleEntity = await Roles.SingleOrDefaultAsync(r => r.NormalizedName == normalizedRoleName, cancellationToken); if (roleEntity != null) { - var userRole = await UserRoles.FirstOrDefaultAsync(r => roleEntity.Id.Equals(r.RoleId) && r.UserId.Equals(user.Id), cancellationToken); + var userRole = await UserRoles.FindAsync(new object[] { user.Id, roleEntity.Id }, cancellationToken); if (userRole != null) { UserRoles.Remove(userRole); @@ -677,9 +678,8 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore var role = await Roles.SingleOrDefaultAsync(r => r.NormalizedName == normalizedRoleName, cancellationToken); if (role != null) { - var userId = user.Id; - var roleId = role.Id; - return await UserRoles.AnyAsync(ur => ur.RoleId.Equals(roleId) && ur.UserId.Equals(userId)); + var userRole = await UserRoles.FindAsync(new object[] { user.Id, role.Id }, cancellationToken); + return userRole != null; } return false; } @@ -888,8 +888,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); - var userLogin = await - UserLogins.FirstOrDefaultAsync(l => l.LoginProvider == loginProvider && l.ProviderKey == providerKey, cancellationToken); + var userLogin = await UserLogins.FindAsync(new object[] { loginProvider, providerKey }, cancellationToken); if (userLogin != null) { return await Users.FirstOrDefaultAsync(u => u.Id.Equals(userLogin.UserId), cancellationToken); @@ -1348,7 +1347,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); - if (String.IsNullOrEmpty(normalizedRoleName)) + if (string.IsNullOrEmpty(normalizedRoleName)) { throw new ArgumentNullException(nameof(normalizedRoleName)); } @@ -1368,10 +1367,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore } private Task FindToken(TUser user, string loginProvider, string name, CancellationToken cancellationToken) - { - var userId = user.Id; - return UserTokens.SingleOrDefaultAsync(l => l.UserId.Equals(userId) && l.LoginProvider == loginProvider && l.Name == name, cancellationToken); - } + => UserTokens.FindAsync(new object[] { user.Id, loginProvider, name }, cancellationToken); /// /// Sets the token value for a particular user. @@ -1420,8 +1416,7 @@ namespace Microsoft.AspNetCore.Identity.EntityFrameworkCore { throw new ArgumentNullException(nameof(user)); } - var userId = user.Id; - var entry = await UserTokens.SingleOrDefaultAsync(l => l.UserId.Equals(userId) && l.LoginProvider == loginProvider && l.Name == name, cancellationToken); + var entry = await FindToken(user, loginProvider, name, cancellationToken); if (entry != null) { UserTokens.Remove(entry); diff --git a/test/Shared/UserManagerTestBase.cs b/test/Shared/UserManagerTestBase.cs index 3f5187deb2..37e080247b 100644 --- a/test/Shared/UserManagerTestBase.cs +++ b/test/Shared/UserManagerTestBase.cs @@ -1534,16 +1534,17 @@ namespace Microsoft.AspNetCore.Identity.Test IdentityResultAssert.IsSuccess(await userManager.CreateAsync(u)); } var r = CreateTestRole("r1"); + var roleName = await roleManager.GetRoleNameAsync(r); IdentityResultAssert.IsSuccess(await roleManager.CreateAsync(r)); foreach (var u in users) { - IdentityResultAssert.IsSuccess(await userManager.AddToRoleAsync(u, await roleManager.GetRoleNameAsync(r))); - Assert.True(await userManager.IsInRoleAsync(u, await roleManager.GetRoleNameAsync(r))); + IdentityResultAssert.IsSuccess(await userManager.AddToRoleAsync(u, roleName)); + Assert.True(await userManager.IsInRoleAsync(u, roleName)); } foreach (var u in users) { - IdentityResultAssert.IsSuccess(await userManager.RemoveFromRoleAsync(u, await roleManager.GetRoleNameAsync(r))); - Assert.False(await userManager.IsInRoleAsync(u, await roleManager.GetRoleNameAsync(r))); + IdentityResultAssert.IsSuccess(await userManager.RemoveFromRoleAsync(u, roleName)); + Assert.False(await userManager.IsInRoleAsync(u, roleName)); } }