C# identity не может создавать пользовательские свойства

Это мой класс, полученный из IdentityUser:

    public class User : IdentityUser
{
    public string Extension { get; set; }
}

Это DbContext

public class SecurityDbContext : IdentityDbContext<User>
{
    private string connectionString;
    private string dbProvider;

    public SecurityDbContext(string connectionString, string dbProvider)
    {
        this.connectionString = connectionString;
        this.dbProvider = dbProvider;
    }

В Startup.cs

services.AddDbContext<SecurityDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("dataContext")));

        services.AddIdentity<User, IdentityRole>()
        .AddEntityFrameworkStores<SecurityDbContext>()
        .AddSignInManager<SignInManager<User>>()
        .AddDefaultTokenProviders();

Я добавил свойство Extension, удалил все таблицы и вызвал

EnsureDatabasesCreated();

Созданы все таблицы, но таблица AspNetUsers не содержит свойства Extension. Что я делаю неправильно?

2 ответа

Решение

Оказывается, мне пришлось добавить это поле в мой RegisterRequest.

Вы также должны сделать свой контекст наследуемым от IdentityDbContext<TUser> где TUser Ваш пользовательский тип (User в коде, который вы предоставили), который также наследует от IdentityUser, лайк:

public class ApplicationDbContext : IdentityDbContext<User>
{
     public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
     {
     }
}

Это веб-приложение Netcore? Если это так, пожалуйста, убедитесь, что вы также зарегистрировали личность на вашем ServiceProvider и указал свой пользовательский класс пользователя на ConfigureServices метод:

 public void ConfigureServices(IServiceCollection services)
 {
     ...
     services.AddIdentity<User, IdentityRole>()
         .AddEntityFrameworkStores<ApplicationDbContext>()
         .AddSignInManager<SignInManager<User>>()
         .AddUserManager<UserManager<User>>();
     ...
 }

указав свой обычай User класс и обычай Role класс, если это необходимо.

Другие вопросы по тегам