Идентификационная таблица пользователя с измененным идентификатором?

Я изменил вкладку AspNetUser (удостоверение) только на пользователя со следующим кодом.

        // Change the name of the table to be Users instead of AspNetUsers
        modelBuilder.Entity<IdentityUser>()
            .ToTable("Users").Property(p => p.Id).HasColumnName("UserID");
        modelBuilder.Entity<ApplicationUser>()
            .ToTable("Users").Property(p => p.Id).HasColumnName("UserID");

Мое приложение работает нормально, но не мое семя. У меня есть этот код в Migrations/Configuration.cs

        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
        var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        string role = "Admin";
        string password = "Password@1234";

        //Create Role Admin if it does not exist
        if (!RoleManager.RoleExists(role))
        {
            var roleresult = RoleManager.Create(new IdentityRole(role));
        }

        //Create Admin users with password=123456
        var admin1 = new ApplicationUser();
        admin1.UserName = "admin1@admin1.com";
        admin1.Email = "admin1@admin1.com";
        admin1.EmailConfirmed = true;
        UserManager.Create(admin1, password);
        UserManager.AddToRole(admin1.Id, role);

        context.SaveChanges();

Я получаю сообщение об ошибке "UserId not found". Похоже, мой UserManager.Create не удается.

Как я могу изменить свой начальный код для использования идентификатора пользователя, установленного в стандартном идентификаторе?

1 ответ

На самом деле, когда вы сохраняете пользователя, у него еще нет заданного идентификатора, вам придется извлекать пользователя в промежутке между созданием пользователя и addToRole:

    var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
    var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
    string role = "Admin";
    string password = "Password@1234";

    //Create Role Admin if it does not exist
    if (!RoleManager.RoleExists(role))
    {
        var roleresult = RoleManager.Create(new IdentityRole(role));
    }

    //Create Admin users with password=123456
    var admin1 = new ApplicationUser();
    admin1.UserName = "admin1@admin1.com";
    admin1.Email = "admin1@admin1.com";
    admin1.EmailConfirmed = true;
    UserManager.Create(admin1, password);

    // Refetch user with ID:
    dbAdmin1 = context.Users.FirstOrDefault(x => x.UserName == admin1.UserName);

    UserManager.AddToRole(dbAdmin1.Id, role);

    context.SaveChanges();
Другие вопросы по тегам