【发布时间】:2016-02-19 05:21:44
【问题描述】:
我在 C# 项目中使用 postgres/postgis 作为 db 和 Nhibernate 作为 ORM。
这是我第一次尝试将 postgis 映射到 .Net 应用程序。我的设置使用 NHibernate 版本 4.0.4.4000 和 NHibernate.Spatial.PostGis 4.0.4.4000(使用 Npgsql 版本 3.0.5)
为了设置映射,我关注了this tutorial,所以我有:
在 web.config 中
<property name="dialect">NHibernate.Spatial.Dialect.PostGisDialect,NHibernate.Spatial.PostGis</property>
对于我添加的休眠配置
cfg.AddAuxiliaryDatabaseObject(new SpatialAuxiliaryDatabaseObject(cfg));
我的 xml 映射文件有以下映射:
<property name="Geom" column="the_geom" type="NHibernate.Spatial.Type.GeometryType, NHibernate.Spatial" />
also tried using PostGis namespace in the mapping:
<property name="Geom" column="the_geom">
<type name="NHibernate.Spatial.Type.PostGisGeometryType, NHibernate.Spatial.PostGis">
<param name="srid">3006</param>
<param name="subtype">POLYGON</param>
</type>
</property>
我的模型类具有以下属性
public virtual IGeometry Geom { get; set; }
现在,当我获取任何几何图形时,属性 Geom 为空。 在日志中,我没有收到异常或错误消息。 我不知道还能尝试什么。
在这个question 中,他使用MS sql 服务器,因为他发现hist 当前的dll (Microsoft.SqlServer.Types.dll) 和所需的一个支持不同版本的Ms sql,所以映射了那个dll到旧版本解决了这个问题。这里会是这样吗?如何/我可以尝试什么?
我还查看了this post,它通过定义他自己的 UserTypeConvention 对他有用,但我没有定义“UserTypeConvention”,所以它对我不起作用。
我已尝试在gis stackexchange 发布此问题但没有结果,所以我在这里尝试。
【问题讨论】:
标签: postgresql nhibernate nhibernate-mapping spatial