使用 EF Core 2.2、Npgsql 和 NetTopologySuite 映射几何

Mapping geometries with EF Core 2.2, Npgsql and NetTopologySuite

我正在尝试映射这个 class:

using NetTopologySuite.Geometries;
using System.Collections.Generic;

namespace Project.API.Models
{
    public class Geo
    {
        public int Id { get; set; }
        public IEnumerable<Geometry> Geometries{ get; set; }
    }
}

但是当我尝试添加新的迁移时出现此错误:

The property 'Geometry.UserData' could not be mapped, because it is of type 'object' which is not a supported primitive type or a valid entity type...

做一些研究 (https://www.npgsql.org/efcore/mapping/nts.html) 我发现我需要使用:

services.AddDbContext<DataContext>(x => x.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), o => o.UseNetTopologySuite()));

而不是

services.AddDbContext<DataContext>(x => x.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

但是添加 o => o.UseNetTopologySuite() 我有错误:

'NpgsqlDbContextOptionsBuilder' does not contain a definition for 'UseNetTopologySuite'

我认为这与版本问题有关,但我使用的版本与本期 github (https://github.com/npgsql/efcore.pg/issues/1024) 中建议的版本完全一致。

NuGet:

As the documentation says, you need to reference the Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite 包。另请注意,如果您使用 EF Core 2.2,则必须使用 NetTopologySuite 1.15.x 而不是 2.0.0;后者仅适用于 EF Core 3.0/3.1。