无法更改ASP身份表名称... ASP .NET CORE 2



我想更改身份表的名称。我四处搜索并找到了以下方法:

第一个:

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

    builder.Entity<ApplicationUser>(entity =>
    {
        entity.ToTable(name: "Users");
    });
    builder.Entity<ApplicationRole>(entity =>
    {
        entity.ToTable(name: "Roles");
    });
    builder.Entity<ApplicationRoleClaim>(entity =>
    {
        entity.ToTable(name: "RoleClaims");
    });
    builder.Entity<ApplicationUserRole>(entity =>
    {
        entity.ToTable(name: "UserRoles");
    });
    builder.Entity<ApplicationUserLogin>(entity =>
    {
        entity.ToTable(name: "UserLogins");
    });
    builder.Entity<ApplicationUserClaim>(entity =>
    {
        entity.ToTable(name: "UserClaims");
     });
    builder.Entity<ApplicationUserToken>(entity =>
    {
        entity.ToTable(name: "UserTokens");
    });
 }

第二个:

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        builder.Entity<ApplicationUser>().ToTable("Users");
        builder.Entity<ApplicationRole>().ToTable("Roles");
        builder.Entity<ApplicationRoleClaim>().ToTable("RoleClaims");
        builder.Entity<ApplicationUserRole>().ToTable("UserRoles");
        builder.Entity<ApplicationUserClaim>().ToTable("UserClaims");
        builder.Entity<ApplicationUserToken>().ToTable("UserTokens");
        builder.Entity<ApplicationUserLogin>().ToTable("UserLogins");
    }

所有通用名称,例如Applicationuser,ApplicationRole等,都具有" Int"作为他们的主要钥匙。

applicationdbcontext startup 看起来如下

applicationdbcontext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>

启动类

       services.AddDbContext<ApplicationDbContext>(options =>
            options.UseMySql(Configuration.GetConnectionString("MySQLConnection")));
        services.AddIdentity<ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

如果您注意到,在启动类中,我没有在AddEntityFrameworkStores<ApplicationDbContext>().上添加 int ,因为编译器错误不断出现在说>"不支持...。'。

我做了以下操作以删除旧数据库和迁移

$ drop-database
$ remove-migration

添加新配置

$ add-migration Initial
$ update-database

我发现只有更改用户和角色表,但没有更改其他(Aspuserroles,aspuserclaim等)。

fyi:

我正在使用Visual Studio2017。我的项目使用单个用户帐户选择的默认Web应用程序 .net Core 2。MySQL为我的数据库提供商。

我的问题是:"我做错了什么?"还是发生了什么变化?

您需要告诉IdentityDbContext所有自定义类型。为了做到这一点,您需要将经过的仿制药扩展到IdentityDbContext,例如:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser,
    ApplicationRole, int, ApplicationUserClaim, ApplicationUserRole,
    ApplicationUserLogin, ApplicationRoleClaim, ApplicationUserToken>

您需要执行以下步骤:

  1. 根据下面的代码添加所需的表名称:

    protected override void OnModelCreating(ModelBuilder builder)
    {
       base.OnModelCreating(builder);    
       builder.Entity<ApplicationUser>().ToTable("Users");
       builder.Entity<ApplicationRole>().ToTable("Roles");
       builder.Entity<ApplicationRoleClaim>().ToTable("RoleClaims");
       builder.Entity<ApplicationUserRole>().ToTable("UserRoles");
       builder.Entity<ApplicationUserClaim>().ToTable("UserClaims");
       builder.Entity<ApplicationUserToken>().ToTable("UserTokens");
       builder.Entity<ApplicationUserLogin>().ToTable("UserLogins");
    }
    
  2. 打开软件包管理器控制台并运行以下命令:

    添加移民mytablesrenation

    您将看到一个在应用程序中创建的新文件,并带有所有命令,以重命名表和更多命令。

  3. 运行更新数据库

完成,您的桌子现在应该重命名。

相关内容

  • 没有找到相关文章

最新更新