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
класс, если это необходимо.