2

如何使用调用 db 扩展函数的自定义字段类型?在这种情况下PostGIS

从 PostGIS 安装页面略有改变:

CREATE TABLE 
  mytable ( 
    id SERIAL PRIMARY KEY,
    geom GEOMETRY(POINT, 26910)
  )
; 

INSERT INTO 
  mytable (geom) 
VALUES 
  (ST_GeomFromText('POINT(0 0)', 26910))
;

SELECT 
  id
FROM 
  mytable
WHERE 
  ST_DWithin(geom, ST_GeomFromText('POINT(0 0)', 26910), 1000)
;

这个表是如何在代码中生成的?以及如何查询?

class mytable
{
  [AutoIncrement]
  [PrimaryKey]
  public int id;

  [???]
  public ??? geom;
}

相关的 SO 问题:How to define 'geography' type using Npgsql and OrmLite (using postgresql, postgis, c#)

4

1 回答 1

0

而是一个老问题,但是当我看到这个问题时,我想到了这个问题,所以我想我会添加这个,以防它帮助其他人。请注意,现在在 ServiceStack 中可能有更好的方法来执行此操作,因为自最初的问题以来它已经大量增加了功能

我还不能使用 ServiceStack 来实现这个工作(几何字段返回为 null),但我使用 Npgsql 如下。

SELECT - 使用 ::Text 如下 -

       var conn = new NpgsqlConnection(connectionString);
        conn.Open();

        var cmd = new NpgsqlCommand(
            "select  id, geom :: TEXT from mytable", conn);

INSERT - 使用标准插入如下 -

         var conn = new NpgsqlConnection(connectionString);
        conn.Open();

        using (var cmd = new NpgsqlCommand(
            "INSERT INTO mytable( geom) VALUES ( st_geomfromtext ( 'POINT(0,0)':: TEXT, 1000))",
            conn)){cmd.ExecuteNonQuery()}
于 2021-01-12T18:00:01.070 回答