Как провести рефакторинг Relational () в NetCore3.0 - PullRequest
1 голос
/ 27 октября 2019

Я не знаю, как выбрать свойство после ревизии.

private void ApplySnakeCaseNames(ModelBuilder modelBuilder)
{
var mapper = new NpgsqlSnakeCaseNameTranslator();

        foreach (var entity in modelBuilder.Model.GetEntityTypes())
        {
            // modify column names
            foreach (var property in entity.GetProperties())
            {
                property.Relational().ColumnName = mapper.TranslateMemberName(property.Relational().ColumnName);
            }

            // modify table name
            entity.Relational().TableName = mapper.TranslateMemberName(entity.Relational().TableName);

            // move asp_net tables into schema 'identity'
            if (entity.Relational().TableName.StartsWith("asp_net_"))
            {
                entity.Relational().TableName = entity.Relational().TableName.Replace("asp_net_", string.Empty);
                entity.Relational().Schema = "identity";
            }
        }
    }

Я ожидаю, что выход сохранит оригинал.

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Это серьезное изменение в Entity Framework Core 3

IProperty.Relational().ColumnName -> IProperty.GetColumnName()

Ссылка: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#id=%22provider-specific-metadata-api-changes%22

0 голосов
/ 30 октября 2019

Для IMutableEntityType и IMutableProperty они предоставляют метод вместо свойств для изменения имени.

Попробуйте что-то вроде ниже:

        foreach (var entity in modelBuilder.Model.GetEntityTypes())
        {
            // modify column names
            foreach (var property in entity.GetProperties())
            {
                property.SetColumnName(mapper.TranslateMemberName(property.GetColumnName()));
            }

            // modify table name
            entity.SetTableName(mapper.TranslateMemberName(entity.GetTableName()));

            // move asp_net tables into schema 'identity'
            if (entity.GetTableName().StartsWith("asp_net_"))
            {
                entity.SetTableName(entity.GetTableName().Replace("asp_net_", string.Empty));
                entity.SetSchema("identity");
            }
        }
...