c# - EF 不创建 AspNet Identity 表

标签 c# entity-framework asp.net-identity

我有一个简单的 aspnet 身份模式,但我无法在我的数据库中创建身份表。 下面是 MVC 网站用于标识的主要类:

 public class ApplicationUser : IdentityUser
{
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        if (modelBuilder == null)
        {
            throw new ArgumentNullException("modelBuilder");
        }

        modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers");
        EntityTypeConfiguration<ApplicationUser> table =
            modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");

        table.Property((ApplicationUser u) => u.UserName).IsRequired();

        modelBuilder.Entity<ApplicationUser>().HasMany<IdentityUserRole>((ApplicationUser u) => u.Roles);
        modelBuilder.Entity<IdentityUserRole>().HasKey((IdentityUserRole r) =>
            new { UserId = r.UserId, RoleId = r.RoleId }).ToTable("AspNetUserRoles");

        EntityTypeConfiguration<IdentityUserLogin> entityTypeConfiguration =
            modelBuilder.Entity<IdentityUserLogin>().HasKey((IdentityUserLogin l) =>
                new
                {
                    UserId = l.UserId,
                    LoginProvider = l.LoginProvider,
                    ProviderKey
                        = l.ProviderKey
                }).ToTable("AspNetUserLogins");

        entityTypeConfiguration.HasRequired<IdentityUser>((IdentityUserLogin u) => u.User);
        EntityTypeConfiguration<IdentityUserClaim> table1 =
            modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims");

        table1.HasRequired<IdentityUser>((IdentityUserClaim u) => u.User);

        modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");

        EntityTypeConfiguration<IdentityRole> entityTypeConfiguration1 =
            modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");

        entityTypeConfiguration1.Property((IdentityRole r) => r.Name).IsRequired();
    }
}

当我尝试登录时,OnModelCreating 方法会执行,但是当我进入数据库时​​,表没有创建,并且我收到错误“无效的列名 AspNetUsers”。 这里有什么问题吗?

最佳答案

在你的 Global.Asax 中添加

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ApplicationDbContext>());

这将在每次模型更改时删除并重新创建数据库。

阅读更多关于 Entity Framework Database Initialization Strategies 的信息

关于c# - EF 不创建 AspNet Identity 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875690/

相关文章:

c# - 模拟基类保护的属性(property)

c# - Entity Framework 如何使用导航属性

调用 POST 方法时 ASP.NET MVC Model 属性为 null

c# - 在方法签名中使用异步时,任务取消异常不会冒泡

c# - 自定义文本框不绘制

c# - 将 null 转换到某物中?

asp.net-identity - asp.net identity 2.2.1 源代码在哪里?

asp.net - linq 查询 asp.net 返回的数据类型

linq - Entity Framework Linq - 如何获取包含所有数据的组

c# - 正确使用 Microsoft.AspNet.Identity 2.0