扩展的IdentityUser不保存

时间:2015-12-16 12:43:13

标签: asp.net entity-framework asp.net-identity

奥莱特!所以我扩展了我的IdentityUser,但它不再保存我的用户了。代码示例可以在下面查看。我试图用管理员用户播种我的数据库,但它没有被存储。我已经尝试在我的种子上运行调试器,但它并没有触发任何东西。所以我有点失落。所以,这是代码。

我的扩展用户类:

public class User : IdentityUser, IBaseEntity
{
    public virtual ICollection<TimeLogEntry> TimeLogEntries { get; set; } 

    public DateTime CreatedAt { get; set; }
    public DateTime UpdatedAt { get; set; }

    public bool IsRemoved { get; set; }

    public virtual User CreatedBy { get; set; }
    public virtual User UpdatedBy { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User> manager, string authenticationType)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
        // Add custom user claims here
        return userIdentity;
    }
}

然后当然是继承自IdentityDbContext的上下文:

public class Context : IdentityDbContext<User>, IContext
{
    public Context()
        : base("MyConnection", throwIfV1Schema: false)
    {
        Configuration.ProxyCreationEnabled = false;
    }

    // DBSETS

    public static Context Create() => new Context();

   // MODELBUILDER
}

最后我的种子:

protected override void Seed(Context context)
    {
        // Launch debugger on seeds
        //if (System.Diagnostics.Debugger.IsAttached == false)
        //    System.Diagnostics.Debugger.Launch();

        SeedUsers(context);;
    }

    private void SeedUsers(Context context)
    {
        var manager = new UserManager<User>(new UserStore<User>(context));

        var adminUser = new User
        {
            UserName = "Admin",
            Email = "admin@test.com"
        };

        if (!manager.Users.Any())
        {
            manager.Create(adminUser, "Admin");
        }
    }

我希望有人可以帮助我!

1 个答案:

答案 0 :(得分:0)

初始值设定项中的Seed()只会在重新创建数据库时运行 - 例如,当您使用DropCreateDatabaseIfModelChanges时。

如果您使用迁移(MigrateDatabaseToLatestVersion初始值设定项),则每次使用update-database应用迁移时都会运行另一个Seed()。

http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/