使用 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。
我正在尝试映射这个 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。