asp.net-mvc - 如何更改 .NET CORE 中的默认 ASP.NET Identity 表名称?

标签 asp.net-mvc asp.net-core identity

我从 .NET Core 开始,在 MVC 5 中我更改了默认表名,例如:AspNETUsers 以这种方式更改为用户,并且效果很好:
身份模型 第一课:

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<IdentityUser>().ToTable("Users").Property(p => p.Id).HasColumnName("UserId");
        modelBuilder.Entity<ApplicationUser>().ToTable("Users").Property(p => p.Id).HasColumnName("UserId");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles");
    }
但它在 ASP.NET CORE (MVC 6) 中不起作用。
谁能帮我?
非常感谢。

最佳答案

仅出于文档目的,对于那些在 future 几年来这篇文章的人(比如我 XD),问题的答案:

如何更改 .NET CORE 中的默认 ASP.NET Identity 表名称?

可以这样解决

   //Repeat with each table
   builder.Entity<ApplicationUser>(entity =>
   {
       entity.ToTable(name:"Users");
       entity.Property(e => e.Id).HasColumnName("UserId");

   });

或者可以这样解决
        modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
        modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
        modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims");
        modelBuilder.Entity<IdentityRole>().ToTable("MyRoles");

但是您可以使用 Alexandru Bucur 在他的博客上给出并在 netcore 2.2 上测试过的这种方法来简化
         foreach (var entityType in modelBuilder.Model.GetEntityTypes())
         {
            var table = entityType.Relational().TableName;
             if (table.StartsWith("AspNet"))
             {
                 entityType.Relational().TableName = table.Substring(6);
             }
         };

但这不再支持 netcore > 2.2,所以,我需要修复它,这是 NetCore > 2.2 上的功能方式
        foreach (var entityType in modelBuilder.Model.GetEntityTypes())
        {
            var tableName = entityType.GetTableName();
            if (tableName.StartsWith("AspNet"))
            {
                entityType.SetTableName(tableName.Substring(6));
            }
        }

选择你喜欢的并享受它,HappyCoding

关于asp.net-mvc - 如何更改 .NET CORE 中的默认 ASP.NET Identity 表名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442513/

相关文章:

c# - 如何将上传的文件从javascript发送到MVC中的 Controller ?

asp.net-core - "k ef"在 Visual Studio 2015 程序包管理器控制台中抛出异常

c# - ASP.NET Core Web API 中的过滤结果

c# - Identity signIn/PasswordSignIn 返回成功,但@User.Identity.IsAuthenticated 返回 false

c# - 使用 SymmetricSecurityKey 签署 jwt 时如何指定 child ?

javascript - 获取 `Galleria is not defined` 异常

c# - HTML-5 data-* 属性的使用在 ASP.NET MVC 4(测试版)中被破坏了吗?

asp.net-core - Cookie 身份验证过期不会重新路由到登录页面

sql - 数据库ID最佳做法

c# - 如何在 ASP.Net MVC 中使用 Task 重定向到一个 Action