База данных 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;
});
});
}
}