我最近升级到 EntityFrameworkCore.PostgreSQL 的最新版本,但是空间数据似乎无法正常工作,因为它们现在使用 NetTopologySuite ,请参见here
要设置NetTopologySuite插件,请添加 Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite nuget到您的 项目。然后,对您的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
来搭建数据库答案 0 :(得分:0)
我遇到了类似的问题,更新了postgre库后,我不得不删除迁移文件并重新生成新文件
答案 1 :(得分:0)
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;
});
});
}
}
答案 2 :(得分:0)
我使用的是geometry(Point, 4326)
类型
我不得不将类型更改为几何
ALTER COLUMN coord TYPE geometry;