如何使用调用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;
}
相关问题:How to define 'geography' type using Npgsql and OrmLite (using postgresql, postgis, c#)
答案 0 :(得分:0)
这是一个老问题,但当我看到这个问题时,我想到了这个问题,所以我想我会添加这个,以防它对其他人有帮助。请注意,现在 ServiceStack 中可能有更好的方法来执行此操作,因为自原始问题以来,它的功能已大大增加
我还没有能够使用 ServiceStack 让它工作(几何字段返回为空),但我已经使用 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()}