如何在Asp.net Identity 3.0中更改表名



如何在ASP.net Identity 3.0中更改表名?

我已经搜索过了,但没有找到任何可行的Identity 3.0

以及这个如何更改asp.net标识3(vnext)使用的表名?不起作用。

您可以通过在DbContext:的OnModelCreating上使用扩展方法ToTable("TableName")更改实体映射来轻松完成此操作

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);
    builder.Entity<User>().ToTable("Users"); // Your custom IdentityUser class
    builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogins");
    builder.Entity<IdentityUserToken<string>>().ToTable("UserTokens");
    builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaims");
    builder.Entity<IdentityUserRole<string>>().ToTable("UserRoles");
    builder.Entity<IdentityRoleClaim<string>>().ToTable("RoleClaims");
    builder.Entity<IdentityRole>().ToTable("Roles");            
}

这里唯一的问题是记住使用具有标识符类型的泛型(字符串是AspNetCore.上的默认值)

只是为了文档的目的,对于那些来这篇关于未来几年的文章的人,(像我XD),问题的答案:

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

可以作为这个解决

//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

相关内容

  • 没有找到相关文章

最新更新