База данных DotNet Core сначала использует NetTopologySuite

Недавно я обновил до последней версии EntityFrameworkCore.PostgreSQL, но пространственные данные, похоже, не работали, потому что теперь они используют NetTopologySuite, см. Здесь

Чтобы настроить плагин NetTopologySuite, добавьте в свой проект нюгет Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite. Затем внесите следующую модификацию в строку UseNpgsql():

Я использую dotnet ef dbcontext scaffold команда

dotnet ef dbcontext scaffold "MyConnectionString" Npgsql.EntityFrameworkCore.PostgreSQL

Тем не менее scaffold похоже, что команда не использует отображение NetTopologySuite. Я все еще получаю следующую ошибку

Could not find type mapping for column 'public.behaviour.coord' with data type 'geometry(Point)'. Skipping column.

Как я могу восстановить свою базу данных с помощью NetTopologySuite

1 ответ

У меня была похожая проблема, после обновления библиотеки postgre мне пришлось удалить файлы миграции и восстановить новые

Я использовал geometry(Point, 4326) типа, и мне пришлось изменить тип на геометрию

ALTER COLUMN coord TYPE geometry;
public class EFDesignTimeService : IDesignTimeServices
{
    public void ConfigureDesignTimeServices(IServiceCollection services)
    {
        new EntityFrameworkRelationalServicesBuilder(services).TryAddProviderSpecificServices(x =>
        {
            x.TryAddSingleton<INpgsqlOptions, NpgsqlOptions>(p =>
            {
                var dbOption = new DbContextOptionsBuilder()
                    .UseNpgsql("connection string",
                        ob => ob.UseNodaTime().UseNetTopologySuite()).Options;
                var npgOptions = new NpgsqlOptions();
                npgOptions.Initialize(dbOption);
                return npgOptions;
            });
        });
    }
}
Другие вопросы по тегам