首先使用NetTopologySuite的dotnet核心数据库

时间:2018-06-21 13:26:00

标签: c# postgresql .net-core nettopologysuite

我最近升级到 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

来搭建数据库

3 个答案:

答案 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;