将 sql server spatial 和 NHibernate 与 CreateSqlQuery 相结合

Posted

技术标签:

【中文标题】将 sql server spatial 和 NHibernate 与 CreateSqlQuery 相结合【英文标题】:combining sql server spatial and NHibernate with CreateSqlQuery 【发布时间】:2012-11-03 22:16:34 【问题描述】:

我没有在 sql server 2008 中映射地理表,我想在 c# 中使用 nhibernate 用多边形实例查询它。 一开始我尝试直接使用sql server spatial,但遇到了这个问题: Using SQL Server 2008 Geography types with nHibernate's CreateSQLQuery

我的第二次尝试是这样的:

session.CreateSQLQuery("select [shape] from [table] where (:codeShape).STIntersects([shape]) = 1").SetParameter("codeShape", codeShape, NHibernateUtil.Custom(typeof(MsSql2008GeographyType)));

但是这个尝试也会引发异常:

Could not execute query [select [shape] from [table] where (?).STIntersects([shape]) = 1")] Name:codeShape - Value:POLYGON((30 40, ...))

内部异常是:

The specified input does not represent a valid geography instance.

尽管 codeShape.IsValid 返回 true。

当我直接在 sql server 中运行此查询时,我得到了预期的结果。

有什么想法或解决方案吗?

谢谢。

【问题讨论】:

【参考方案1】:

问题已解决。我不得不反转多边形的点。

【讨论】:

以上是关于将 sql server spatial 和 NHibernate 与 CreateSqlQuery 相结合的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server Spatial:是几何类型还是地理类型的变量?

NHibernate.Spatial 和 Sql 2008 地理类型 - 如何配置

将有效的几何形状保存到 Sql Server 2008 地理列中

SQL Server笔记2

sql server 2008清除日志

在 Bluemix SQL 数据库中启用 Spatial Extender