簡體   English   中英

如何在使用 db 函數的 ServiceStack.OrmLite 中添加自定義字段類型?

[英]How to add custom field type in ServiceStack.OrmLite which uses db function?

如何使用調用 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 問題: 如何使用 Npgsql 和 OrmLite 定義“地理”類型(使用 postgresql、postgis、c#)

而是一個老問題,但是當我看到這個問題時,它出現在我身上,所以我想我會添加這個,以防它對其他人有幫助。 請注意,現在在 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()}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM