为什么EF Core 2.2总是更新“ AspNetUsers”表中的“ ConcurrencyStamp”,“ PasswordHash”?

时间:2019-08-28 18:13:12

标签: c# .net entity-framework .net-core entity-framework-core

我有.net核心应用程序,该应用程序使用ef core 2.2代码优先模型, 当我运行

  

添加迁移

它总是更新"ConcurrencyStamp", "PasswordHash"表中的"AspNetUsers"列值。

自动生成的UP方法的内容是

        migrationBuilder.UpdateData(
            table: "AspNetUsers",
            keyColumn: "Id",
            keyValue: new Guid("b0bea27d-5eae-4836-8f85-8bf8f1aed8d5"),
            columns: new[] { "ConcurrencyStamp", "PasswordHash" },
            values: new object[] { "c599b745-8e24-438b-bd62-8264102ac960", "AQAAAAEAACcQAAAAEHjqRSJuPQtzpQR7L7hUNo3vFM8P9dhHkiXQjYRpdgS1Z9I9TXQ2XwhM9CQiE0oVyg==" });

        migrationBuilder.UpdateData(
            table: "AspNetUsers",
            keyColumn: "Id",
            keyValue: new Guid("b0bea27d-5eae-4836-8f85-8bf8f1aed8d6"),
            columns: new[] { "ConcurrencyStamp", "PasswordHash" },
            values: new object[] { "bdbc0bcf-6eaa-489b-b2a2-9c1742a38bf4", "AQAAAAEAACcQAAAAEBpVzPQl74gxL+V93biLDmn4oKNJSZZ5VDUpwSQ/S8h+itGvGbScqG78Wi35bmN4dQ==" });

我的 OnModelCreating 方法如下

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

    modelBuilder.ApplyConfigurations(
        typeof(SampleDBContext).Assembly,
        typeof(IEntityTypeConfiguration<>));

    DatabaseSeeder.Seed(modelBuilder);
}

内部种子方法我调用了为应用程序用户提供种子的方法。

    private static void SeedApplicationUser(ModelBuilder modelBuilder)
    {
        var hasher = new PasswordHasher<ApplicationUser>();

        var admin = new ApplicationUser
        {
            Id = Guid.Parse("b0bea27d-5eae-4836-8f85-8bf8f1aed8d4"),
            RoleType = RoleTypes.Admin,
            Email = "admin@gmail.io",
            NormalizedEmail = "ADMIN@GMAIL.IO",
            EmailConfirmed = true,
            UserName = "admin",
            NormalizedUserName = "ADMIN",
        };

        var user1 = new ApplicationUser
        {
            Id = Guid.Parse("b0bea27d-5eae-4836-8f85-8bf8f1aed8d5"),
            RoleType = RoleTypes.User,
            Email = "user1@gmail.io",
            NormalizedEmail = "USER1@GMAIL.IO",
            EmailConfirmed = true,
            UserName = "user1",
            AccessFailedCount = 0,
            NormalizedUserName = "USER1",
        };

        var user2 = new ApplicationUser
        {
            Id = Guid.Parse("b0bea27d-5eae-4836-8f85-8bf8f1aed8d6"),
            RoleType = RoleTypes.User,
            Email = "user2@gmail.io",
            NormalizedEmail = "USER2@GMAIL.IO",
            EmailConfirmed = true,
            UserName = "user2",
            AccessFailedCount = 0,
            NormalizedUserName = "USER2",
        };

        admin.PasswordHash = hasher.HashPassword(admin, "admin@23");
        user1.PasswordHash = hasher.HashPassword(user1, "user1@23");
        user2.PasswordHash = hasher.HashPassword(user2, "user2@23");

        modelBuilder.Entity<ApplicationUser>()
            .HasData(admin, user1, user2);
    }

这是正常行为还是我缺少某些东西?

如果有人需要更多详细信息,请发表评论。 我不知道要提供什么。

谢谢

0 个答案:

没有答案