将 SQL Server 2008 地理类型与 nHibernate 的 CreateSQLQuery 结合使用

2023-12-11

我正在尝试使用 nHibernate (2.0.1GA) 发出 SQL 更新语句,如下所示:

sqlstring = string.Format("set nocount on;update myusers set geo=geography::Point({0}, {1}, 4326) where userid={2};", mlat, mlong, userid);
_session.CreateSQLQuery(sqlstring).ExecuteUpdate();

但是我收到以下错误:“geography@p0”不是可识别的内置函数名称。

我以为 CreateSQLQuery 只会传递我给它的 SQL 并执行它......我猜不会。关于如何在 nHibernate 环境中做到这一点有什么想法吗?


我很确定我可以告诉你发生了什么,但我不知道是否有解决办法。

我认为问题在于 NHibernate 使用 ':' 字符来创建命名参数。你的表情正在变成:

set nocount on;update myusers set geo=geography@p0({0}, {1}, 4326) where userid={2};

@p0 将是一个 SQL 变量。不幸的是,我找不到任何有关转义冒号的文档,因此它们不被视为命名参数。

如果存在转义字符(我快速浏览 NHibernate 源代码没有找到转义字符;如果您想花更多时间搜索,则命名参数在 NHibernate.Engine.Query.ParameterParser 中处理),那么您可以使用它。

其他解决方案:

  • 在源中添加转义字符。然后您可以使用 NHibernate 的修改版本。如果您这样做,您应该将补丁提交给团队,以便它可以包含在真实的东西中,并且您不必维护源代码的修改版本(没有乐趣)。
  • 在数据库中创建一个返回 geography::Point 的用户定义函数,然后调用您的函数而不是标准 SQL 函数。这似乎是最快/最简单的启动和运行方法,但也感觉有点像创可贴。
  • 看看里面有没有东西NHibernate 空间这将允许您以编程方式添加 geography::Point() [或编辑该项目的代码以添加一个并将补丁提交给该团队]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SQL Server 2008 地理类型与 nHibernate 的 CreateSQLQuery 结合使用 的相关文章

随机推荐

  • 我的程序如何检测它是否在特定域上运行?

    我需要根据当前登录用户的位置限制应用程序的特定功能 由于我必须在 Delphi 中实现此逻辑 因此我不希望过度使用完整的 Active Directory LDAP 查询 我当前的想法是利用 DsGetDcName 并使用 DOMAIN C
  • 图像未存储在 sqlite 中

    我制作了一个演示 它将图像存储到数据库中 目前我没有收到任何错误 但我的图像没有存储在 sqlite 数据库中 请看下面的代码并告诉我我的错误在哪里 数据库管理类 sqlite3 sqlite3DatabaseObject sqlite3
  • 如何在工作流程中仅运行失败的会话

    在工作流程中 存在并行和顺序连接的会话 假设一些并行和顺序模式的会话失败 如何仅使用失败的会话重新启动工作流程 我如何在 Informatica 中进行设计 为工作流程打开 出错时暂停 为工作流程中的每个会话启用 恢复时重新启动 现在 如果
  • Python Scrapy 301 重定向

    在抓取给定网站时 我在打印重定向网址 301 重定向后的新网址 时遇到了一些问题 我的想法是只打印它们而不刮掉它们 我当前的代码是 import scrapy import os from scrapy spiders import Cra
  • 在 Python 中获取文件的原始二进制表示

    我想使用 Python 3 将文件中的确切位序列转换为字符串 关于这个主题有几个问题很接近 但没有完全回答 到目前为止 我有这个 gt gt gt data open file bin rb read gt gt gt data xa1 x
  • 使用 Enthought Canopy Python 在 Windows 上安装 OpenCV 的最佳方式?

    我已经在 Windows 上安装了 Enthought Canopy Python 发行版 并且我会 喜欢添加 OpenCV python 绑定 我已经从以下网站下载了最新的 OpenCVhttp sourceforge net proje
  • 使用 getServletConfig().getServletContext().getAttribute() (Java) 时获取 NPE

    我使用 Servlet 的时间并不长 我遇到了这个问题 我无法终止自己 我正在使用 Servlet 创建一个小型 Web 项目 并尝试将我的 Service 和 DAO 对象添加到 ServletContext HTTP Status 50
  • Python 中集合的不区分大小写比较

    我有两套 虽然我可以做列表 或者其他什么 a frozenset Today I am fine b frozenset hello how are you today 我想得到 frozenset Today 或者至少 frozenset
  • 打开 CSV 文件并将每一行写入新的动态命名的 CSV 文件

    我有一个 csv 文件 其中包含 50 行数据 我想将其拆分为每行的单独 csv 文件 其中包括第一行 标题 和相关行 例如 文件 1 包含 行 1 行 2 文件 2 包含 row1 row3 文件 3 包含 row1 row4 等等 目前
  • 如何在选择查询sql时添加空白行

    例子 当我输入 select number city from user get 中的结果是 3 行 如何select我可以自动填充8行的行吗 如果使用循环怎么办 期望的输出 如果有 3 行 则有 5 行空行 如果有 4 行 则有 4 个空
  • 在训练和测试数据中保留相同的虚拟变量

    我正在用 python 构建一个预测模型 其中包含两个独立的训练集和测试集 训练数据包含数字类型分类变量 例如邮政编码 91521 23151 12355 以及字符串分类变量 例如城市 芝加哥 纽约 洛杉矶 为了训练数据 我首先使用 pd
  • 用 python 加密 PDF

    有没有可能在Python中加密PDF文件 一种可能是压缩 PDF 但还有另一种方法吗 感谢您的帮助 问候 菲利克斯 您可以使用pypdf from pypdf import PdfReader PdfWriter reader PdfRea
  • Jquery 验证电子邮件地址或域名

    用户可以输入电子邮件地址或域名 我如何使用 jQuery 验证插件来验证这一点 可接受的值 电子邮件地址 域名 Eg email protected or sample com 我需要在同一文本框中验证域名 document ready f
  • 从 Go gRPC 处理程序中的客户端证书获取主题 DN

    我正在使用带有相互 tls 的 Golang gRPC 是否可以从 rpc 方法获取客户端的证书主题 DN func main creds credentials NewTLS tls Config ClientAuth tls Requi
  • 如何为滑块赋予不同的背景颜色?

    我想根据滑块位置为滑块提供两种不同颜色的颜色 一种颜色应位于滑块之前 另一种颜色应位于滑块之后 我使用 CSS 实现了其他设计 这是对输入 type range 进行皮肤处理的代码 input type range border 1px s
  • Request.UrlReferrer 为空?

    在 aspx C NET 页面 我正在运行框架 v3 5 中 我需要知道用户来自哪里 因为他们无法在不登录的情况下查看页面 如果我有页面A 用户想要查看的页面 重定向到页面B 登录页面 Request UrlReferrer 对象为 nul
  • Numpy 字典顺序

    我想按字典顺序对以下数组进行排序a 获取索引位置 但是 我在理解 numpy 结果时遇到问题 gt gt gt a np asarray 1 1 1 2 1 2 2 1 2 3 1 0 1 2 3 3 2 2 gt gt gt a arra
  • 强制浏览器下载 PDF 文档而不是打开它

    我想让浏览器从服务器下载 PDF 文档 而不是在浏览器本身中打开该文件 我正在使用 C 下面是我使用的示例代码 它不起作用 string filename Sample server url response redirect filena
  • 如何使用 C++11 std::thread 设置堆栈大小

    我一直在努力熟悉std 线程C 11 中的库 并且遇到了绊脚石 最初 我来自 posix 线程背景 并且想知道如何在构造之前设置 std thread 的堆栈大小 因为我似乎找不到执行此类任务的任何参考 使用 pthreads 设置堆栈大小
  • 将 SQL Server 2008 地理类型与 nHibernate 的 CreateSQLQuery 结合使用

    我正在尝试使用 nHibernate 2 0 1GA 发出 SQL 更新语句 如下所示 sqlstring string Format set nocount on update myusers set geo geography Poin