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

时间:2016-04-13 06:09:53

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

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

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

并且此How can I change the table names used by asp.net identity 3 (vnext)?无效。

2 个答案:

答案 0 :(得分:2)

您可以通过ToTable("TableName")的{​​{1}}上的扩展程序OnModelCreating更改实体映射,轻松完成此操作:

DbContext

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

答案 1 :(得分:-1)

仅出于文档目的,对于在未来几年里担任此职位的人(例如我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