我正在尝试将Point Type保存到Postgresql
我已经尝试过这种方式。
(DB表模型定义)

 public NpgsqlPoint Position { get; set; }

我用这种方法设置对象
  posData.Position = new NpgsqlPoint (34.3244,23.2344);

但是当我在dbContext上调用.SaveChanges时,出现了一个异常
不是违反Null约束,所以我想EF尝试插入null。

我已经在输入之前调试了posData.Position,并且该对象包含正确的数据。

我已经搜索过google,但没有找到任何示例或遇到相同问题的人。

有线索吗?

最佳答案

看来NpgsqlPoint制作了PostgreSQL point type。这与PostGIS扩展程序使用的POINT geometry type不同(例如geometry(Point, 4326))。

要制作PostGIS geometry,您将需要xysrid(空间引用ID;例如,参见http://spatialreference.org/)。这些可以与ST_MakePoint几何构造函数一起使用,并与ST_SetSRID一起建立空间引用。例如,这是一个参数化命令:

SELECT ST_SetSRID(ST_MakePoint(:long:, :lat:), 4326)

假定为WGS84坐标(SRID = 4326)。

08-28 02:36