我正在尝试将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
,您将需要x
,y
和srid
(空间引用ID;例如,参见http://spatialreference.org/)。这些可以与ST_MakePoint几何构造函数一起使用,并与ST_SetSRID一起建立空间引用。例如,这是一个参数化命令:
SELECT ST_SetSRID(ST_MakePoint(:long:, :lat:), 4326)
假定为WGS84坐标(SRID = 4326)。