簡體   English   中英

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

[英]How to change table names in Asp.net Identity 3.0?

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

我已經搜索過,但我沒有得到任何關於 Identity 3.0 的可行的文章

以及這個如何更改asp.net identity 3 (vnext) 使用的表名? 不工作。

您可以通過在OnModelCreatingDbContext上使用擴展方法ToTable("TableName")更改實體映射來輕松完成此DbContext

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM