【发布时间】:2011-04-19 16:06:31
【问题描述】:
我在使用 NHibernate 和 postgresql POINT 数据类型时遇到了问题(尽管我相信这是所有尝试映射 NHibernate SqlTypes 未涵盖的 SQL 类型的人的常见问题)。
我的 Data.Point 类有两个公共浮点数:xcoordinate 和 ycoordinate。
我的第一次尝试是尝试实现 IUserType 接口,但我很快发现问题出现得更早,在映射阶段:
用户代码未处理 MappingException:
无法确定类型:Data.PointUserType,Data.Point,列:NHibernate.Mapping.Column(coordinates)
我对 NHibernate 很陌生,但在我看来,如果数据库中的列是已知类型(float、int、varchar 和所有“经典”类型之一,但不是我需要的几何形状)。
通过映射到坐标 [0] 和坐标 [1],我设法将我的 POINT 映射到两个不同的属性。但这仅对 SELECT 和 UPDATE 查询有用,因为 INSERT postgresql 会抱怨“坐标”不可为空。
另外,我找不到 NHibernate Spatial 扩展的实际版本,我更愿意控制我的 POINT 类型,因为我很少使用这种类型,因此我宁愿不加载整个 NHibernate Spatial 程序集(假设它们正在积极开发,否则我无论如何都会远离它们)。
我最后的想法是我需要弄乱 NHibernate 的 SQL 生成(因为插入 SQL 的某些部分将是 '(a, b)'::point,非常具体),也许这有点太麻烦了(也许不是,我愿意检查一下)。
我对 NHibernate 还很陌生,但我越来越绝望了。 谁能指点我的地方?
【问题讨论】:
-
我知道有点晚了,但你能做到吗?我正在尝试在 Nhibernate 中映射 postgresql Point 类型,无论有无 NH.Spatial,我一直在寻找您的问题。
-
确实有,不过有一些需要注意的地方。在 gmail dot com 的 mzabani 与我联系。
标签: .net sql nhibernate nhibernate-mapping sql-types