为什么在 .net core 3 中删除了 Relational() 扩展方法?

Ham*_*loo 8 pluralize entity-framework-core .net-core .net-core-3.0

EF Core 2.0 在IMutableEntityType接口中有一个名为 Relational 的扩展方法。

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

我能够使用它并在 Pluralizer 库的帮助下将表名复数化。

但是在 .NET Core 3.0 中,这种方法不存在。

任何人都可以帮助我并给我一个简短的解释吗?

Moi*_*jik 18

根据此问题,EF Core 3 中的语法已稍作更改,这是新版本:

Pluralizer pluralizer = new Pluralizer();
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
    string tableName = entityType.GetTableName();
    entityType.SetTableName(pluralizer.Pluralize(tableName));
}
Run Code Online (Sandbox Code Playgroud)


小智 11

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());
            }
        }
Run Code Online (Sandbox Code Playgroud)