首页 > 解决方案 > dotnet core 数据库首先使用 NetTopologySuite

问题描述

我最近升级到了EntityFrameworkCore.PostgreSQL的最新版本,但空间数据似乎不起作用,因为他们现在使用NetTopologySuite看到这里

要设置 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 搭建我的数据库

标签: c#postgresql.net-corenettopologysuite

解决方案


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;
            });
        });
    }
}

推荐阅读