C#身份无法创建自定义属性

时间:2018-07-05 12:33:46

标签: c# asp.net-core asp.net-core-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();

我添加了属性扩展名,删除了所有表并调用了

EnsureDatabasesCreated();

它创建了所有表,但是AspNetUsers表不包含Extension属性。 我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您还必须使上下文从IdentityDbContext<TUser>继承,其中TUser是您的自定义用户类型(在您提供的代码中为User),也从IdentityUser继承,例如:

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

这是netcore网络应用程序吗?如果是这样,请确保您还通过ServiceProvider方法在ConfigureServices上注册了Identity并指定了自定义User类:

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

指定自定义User类和自定义Role类(如果需要)。

答案 1 :(得分:0)

原来,我必须将此字段添加到我的RegisterRequest中。