Создание пользователя Async со стандартным IdentityUser <string>не работает после обновления с .NetCore2.2 до .NetCore3.0 - PullRequest
1 голос
/ 03 октября 2019

Рабочая реализация Я изменил тип по умолчанию для identityUser на целое число и остальную часть конфигурации, чтобы заставить его снова работать правильно.

Startup Configuration

Changed: identityBuilder = new IdentityBuilder(identityBuilder.UserType, typeof(IdentityRole<int>), identityBuilder.Services);

Пользовательский класс пользователя

Changed: public class AppUser : IdentityUser<int>

ApplicationDbContext

Changed:  public class ApplicationDbContext : IdentityDbContext<AppUser, IdentityRole<int>, int, IdentityUserClaim<int>, IdentityUserRole<int>, IdentityUserLogin<int>,IdentityRoleClaim<int>, IdentityUserToken<int>>

Старая реализация Переменная identityResult в реализации репозитория возвращает ноль и выдает следующее исключение:

System.InvalidOperationException: Невозможно отследить сущность типа 'AppUser', так как свойство первичного ключа'Id' - это ноль

Конфигурация запуска

var identityBuilder = services.AddIdentityCore<AppUser>(o =>
    {
        // configure identity options
        // Options are intentionally let out
    });

identityBuilder = new IdentityBuilder(identityBuilder.UserType, typeof(IdentityRole), identityBuilder.Services);
identityBuilder.AddEntityFrameworkStores<ApplicationDbContext>();

Пользовательский класс пользователя

public class AppUser : IdentityUser 
{
    // Extended Properties
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<AppUser>

Репозиторий

public async Task<CreateUserResponse> CreateUser(User user, string password)
{
    var appUser = _mapper.Map<AppUser>(user);           
    var identityResult = await _userManager.CreateAsync(appUser, password);         
    return new CreateUserResponse(appUser.Id.ToString(), identityResult.Succeeded, identityResult.Succeeded ? null : identityResult.Errors.Select(e => new Error(e.Code, e.Description)));
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...