Dot-Net-Core

為什麼在 .net core 3 中刪除了 Relational() 擴展方法?

  • March 16, 2020

IMutableEntityTypeEF Core 2.0 在介面中有一個名為 Relational 的擴展方法。

Pluralizer pluralizer = new Pluralizer();
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
   string tableName = entityType.Relational().TableName;
   entityType.Relational().TableName = pluralizer.Pluralize(tableName);
} 

在 Pluralizer 庫的幫助下,我能夠使用它來複數表名。

但是在 .NET Core 3.0 中,這個方法是不存在的。

誰能幫助我並給我一個簡短的解釋?

根據此問題, EF Core 3 中的語法已稍作更改,這是新版本:

Pluralizer pluralizer = new Pluralizer();
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
   string tableName = entityType.GetTableName();
   entityType.SetTableName(pluralizer.Pluralize(tableName));
}
foreach (var entity in modelBuilder.Model.GetEntityTypes())
       {
           // Replace table names
           //entity.Relational().TableName = entity.Relational().TableName.ToSnakeCase();
           entity.SetTableName(entity.GetTableName().ToSnakeCase());

           // Replace column names            
           foreach (var property in entity.GetProperties())
           {
               property.SetColumnName(property.Name.ToSnakeCase());
           }

           foreach (var key in entity.GetKeys())
           {
               key.SetName(key.GetName().ToSnakeCase());
           }

           foreach (var key in entity.GetForeignKeys())
           {
               key.PrincipalKey.SetName(key.PrincipalKey.GetName().ToSnakeCase());
           }

           foreach (var index in entity.GetIndexes())
           {
               index.SetName(index.GetName().ToSnakeCase());
           }
       }

引用自:https://stackoverflow.com/questions/59114236