我有一个NHibernate和postgresql POINT数据类型的问题(尽管我相信这是所有这些的常见问题试图映射一个没有被NHibernate SqlTypes覆盖的SQL TYPE)。为POINT postgresql数据类型(或任何非原始类似nhibernate类型的列)实现新的NHibernate类型
我的Data.Point类有两个公共浮点数:xcoordinate和ycoordinate。
我第一次尝试是想贯彻IUserType接口,但我很快就发现,问题就来了较早,在映射阶段:
MappingException是未处理由用户代码:
无法确定类型为:Data.PointUserType,Data.Point,为列:NHibernate.Mapping.Column(坐标)
我很新的NHibernate的,但在我看来,我只能创建一个新的类型,如果该数据库中的列是已知类型(float,int,var字符和所有“经典”类型,但不是我需要的几何类型)。
我已经设法通过映射到坐标[0]和坐标[1]将我的POINT映射到两个不同的属性。但是这只对SELECT和UPDATE查询有用,对于INSERT,postgresql会抱怨“坐标”不可为空。另外,我找不到NHibernate Spatial扩展的实际版本,我宁愿控制我的POINT类型,因为我很少使用这种类型,因此我宁愿不加载整个NHibernate Spatial程序集(假设它们是积极开发的,否则我会远离它们)。我最后的想法是我需要搞乱NHibernate的SQL生成(因为插入SQL的某些部分将是'(a,b)':: point,非常具体),也许这是一个太麻烦了(也许不是,我会愿意检查出来)。
我对NHibernate相当新,但我越来越绝望。 任何人都可以指点我吗?
我知道这是一个有点晚,但均你能做到吗?我试图在Nhibernate中映射postgresql Point类型,有或没有NH.Spatial,我一直在找你的问题。 – 2013-11-25 10:46:36
确实,我有,但有些事情需要注意。请通过gmail dot com的mzabani与我联系。 – 2013-11-25 13:46:01