运行时错误看截屏,困扰了多天,尝试更新引用库版本,均无效,偶尔能好使。今天终于解决,其实错误提示还是很明确的,但之前就是不开窍。现把问题记录备忘。
解决方法一:
public virtual GeoAPI.Geometries.IGeometry FPos { get; set; }
改为:
public virtual NetTopologySuite.Geometries.Point FPos { get; set; }
即可解决。
解决方法二:
[Property(0, Name = "FPos", Column = "FPOS", NotNull = false, TypeType = typeof(NHibernate.Spatial.Type.GeometryType))]
[Param(Content = "POINT", Name = "subtype")] // 增加明确图形类型
[Param(Content = "4326", Name = "srid")]
public virtual GeoAPI.Geometries.IGeometry FPos { get; set; }
原因分析:
系统引用了类库
GeoAPI 1.7.4 --- 地理要素接口定义
NetTopologySuite 1.14 --- GeoAPI的实现
NetTopologySuite.IO.SpatiaLite 1.14 --- NTS基于Spatialite库的扩展,读取数据并转化为NTS库定义的图形要素。
NHibernate.dll 4.1.1.4000 \ NHibernate.Spatial.dll 4.0.3.4000 ---- NH对数据库的操作定义。
NHibernate.Spatial.SpatiaLite.dll --- NH对Spatailite库的操作的实现。
在进行NHibernate映射时,需要指定明确的属性类型。