ASP.Net.Core 2.2 Идентификатор изменения идентификатора со строки на int - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь изменить идентификатор таблицы Users со строки (GUID) на int и действительно изо всех сил.Я просмотрел множество примеров, но, похоже, они относятся к более ранним версиям Identity или vs и по многим причинам не работают.

Я либо получаю ошибку компилятора

«Microsoft.AspNetCore.Identity.IdentityUser», в «Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore 6 [TUser, TContext, TKey, TUserClaim, TUserLogin, TUserToken *» * 1006 '1006) нарушает ограничение типа 1007 TU6.*

Или, когда я создаю миграцию, я все еще получаю строковый столбец для идентификатора, а не int, как я ожидал.

Я использую vs2019.Asp.Net.Core 2.2 и Microsoft.AspNetCore.Identity 2.2

Кто-нибудь может мне помочь, пожалуйста?Спасибо!

1 Ответ

0 голосов
/ 29 сентября 2019

Сначала расширьте класс класса IdenityUser следующим образом, чтобы можно было добавлять пользовательские свойства:

public class ApplicationUser : IdentityUser<int>
{
}

Затем расширьте класс IdentityRole, если вы также используете Role в приложении.Вы можете хранить это в безопасности, даже если вы не хотите его использовать:

public class ApplicationRole : IdentityRole<int>
{
}

Теперь ваш ApplicationDbContext должен выглядеть следующим образом:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

Теперь в вашем методе ConfigureServicesкласса Startup следующим образом:

public void ConfigureServices(IServiceCollection services)
{
   services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

   services.AddIdentity<ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders(); 
}

Работа выполнена!Теперь запустите отладку с новой миграцией и примените ее.

...