使用MySQL数据库的ASP.NET身份给我的身份表一个错误的名称

时间:2018-07-25 20:59:11

标签: c# mysql asp.net asp.net-mvc identity

我有一个托管在Azure中的mysql数据库,并且我的计算机上有MVC应用程序。 我想使用身份框架来跟踪我的用户。身份表是在我的数据库中生成的,但是它们的名称都错误:

enter image description here

因为当我想在注册页面上添加新用户时,出现以下错误:

表xxxxxxxx.aspnetusers不存在。

我知道这是因为我的表名错误。 但是我不知道为什么表被添加了名称 my_aspnet_users 而不是 aspnetusers

我按照本文作为指导: https://www.codeproject.com/Tips/788357/How-to-set-up-application-using-ASP-NET-Identity-w

我还尝试编辑ApplicationDbContext:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{

    public ApplicationDbContext()
        : base("WebShopDatabaseContext")
    {
        Database.SetInitializer(new MySqlInitializer());
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<IdentityUser>().ToTable("aspnetusers");
        modelBuilder.Entity<ApplicationUser>().ToTable("aspnetusers");
        modelBuilder.Entity<IdentityUserRole>().ToTable("aspnetuserroles");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("aspnetuserlogins");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("aspnetuserclaims");
        modelBuilder.Entity<IdentityRole>().ToTable("aspnetroles");
    }
}

1 个答案:

答案 0 :(得分:1)

我不会试图弄清为什么表名保持原样,
但是您可以将DbContext配置为使用实际的, 就像下面的一样。
对每个表执行相同的操作。

modelBuilder.Entity<IdentityUser>().ToTable("my_aspnet_users");