【问题标题】:Why was Relational() extention method removed in .net core 3?为什么在 .net core 3 中删除了 Relational() 扩展方法?
【发布时间】:2020-03-25 14:36:51
【问题描述】:

EF Core 2.0 在IMutableEntityTypeinterface 中有一个名为 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 中,此方法不存在。

谁能帮我解释一下?

【问题讨论】:

    标签: .net-core entity-framework-core .net-core-3.0 pluralize


    【解决方案1】:

    根据this issue,EF Core 3 中的语法做了一点改动,这里是新版本:

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

    【讨论】:

    • Plurilizer 不属于 EF Core 3 是一个外部包,因此此语法是为了匹配该包上公开的扩展方法
    【解决方案2】:
    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());
                }
            }
    

    【讨论】:

    • ToSnakeCase 是什么?
    • 这个可以去掉。我需要这个,以便将我的表格替换为 SnakeCase。
    • 我找到了很多答案,但到目前为止,这很清楚,很有说明性,谢谢
    • 今天的了不起的人,感谢您的直接解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2018-01-24
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多