我没有在 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 中运行此查询时,我得到了预期的结果。
任何想法或解决方案?
谢谢。