【问题标题】:Postgis geography type using Npgsql for EntityFrameworkPostgis 地理类型使用 Npgsql 的 EntityFramework
【发布时间】:2016-11-28 17:01:02
【问题描述】:

我有一张使用 Postgis 地理类型的表格:

CREATE TABLE Place (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    location GEOGRAPHY NOT NULL
);

如何在我的实体类中声明位置字段?

class Place {
    public long id { get; set; }
    public string name { get; set; }
    public ??? location { get; set; }
}

当然,我读过这个question,但那是在 2014 年,Npsql 似乎已经发展到可以使用 Postgis 并支持 .Net System.Data.Spatial。请参阅以下现已关闭的 Npsql 问题:

我在 Npsql 文档中找不到关于如何使用这些功能的线索。

【问题讨论】:

    标签: .net entity-framework postgresql postgis npgsql


    【解决方案1】:

    虽然 Npgsql 确实包含 PostGIS 支持,但它只是部分支持 - 并非所有类型都得到处理,不幸的是 GEOGRAPHY 是其中之一。

    这里是相关问题:https://github.com/npgsql/npgsql/issues/1322,请去投票。

    【讨论】:

    • 感谢您的回答。我将 GEOGRAPHY 列更改为标准 Postgres POINT,但没有成功。你能判断是否应该支持标准 Postgres POINT 吗?
    • 有两种点类型:内置的 PostgreSQL POINT 和 PostGIS 的 POINT - 都支持。如果您想要的只是一个点 (x,y),最简单的方法是使用内置点,可以通过在您的实体上拥有 NpgsqlPoint 类型的属性来映射它。
    • 这正是我尝试过的,我得到了“字段 field1 的类型当前对 Npgsql (OID XXXXX) 未知”错误。会再试一次,谢谢。
    猜你喜欢
    • 2013-06-25
    • 2023-03-29
    • 2011-09-20
    • 2011-10-23
    • 2012-06-26
    • 2019-11-02
    • 1970-01-01
    • 2019-02-19
    • 2023-04-11
    相关资源
    最近更新 更多