我使用postgres / postgis作为db和Nhibernate作为C#项目的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>
对于我添加的nhibernate配置
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为null。 在日志中,我不会收到异常或错误消息。 我不知道还有什么可以尝试。
在这个question中,使用MS sql server,他得到了它的工作,因为他想出了hist current dll(Microsoft.SqlServer.Types.dll)和所需的一个支持不同版本的Ms sql,所以映射dll到旧版本修复了问题。这可能就是这种情况吗?我怎么样/可以尝试什么?
我还通过定义他自己的UserTypeConvention来查看this post它在哪里工作但是我没有定义“UserTypeConvention”,所以它对我不起作用。
我尝试在gis stackexchange发布此问题但没有结果,所以我在这里尝试。