Рабочая реализация Я изменил тип по умолчанию для 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)));
}