Dapper.net Oracle参数

 lmc的 发布于 2023-02-06 10:26

我正在尝试将Dapper.net与Oracle一起使用.

从这篇文章我明白我们可以使用没有前缀的参数,然后dapper将适用于sql serveroracle

如果没有明确的oracle命名参数前缀,我很难让它工作 :

以下查询

sqlConnection.Query("Select * FROM document WHERE id = param1", new { param1 = 963 });

抛出 ORA-00904: "PARAM1": invalid identifier

如果我尝试使用@前缀,它会抛出ORA-00936: missing expression

如果我使用:前缀它按预期工作.但我不希望我的查询在Oracle或Sql Server上依赖(尽可能).

我使用的是最新的nuget软件包版本Dapper.dll 1.12.1.1

我做错了什么或者我误解了这篇文章?

1 个回答
  • 是的,你误解了这个帖子.在SQL通过原样通过,且必须包含正确的:param1@param1等"无前缀在所有 "被谈论的代码,你没有看到 -具体而言,确保代码的功能(通过某种机制):

    cmd.Parameters.Add("param1", 963);
    

    VS

    cmd.Parameters.Add("@param1", 963);
    

    VS

    cmd.Parameters.Add(":param1", 963);
    

    第一个(没有前缀)是正确和首选的选项.

    如果您希望代码中的SQL与参数无关,则可以使用此处的信息:在ADO.NET中获取参数前缀

    但是,SQL很少足够接近,只需查找参数前缀即可解决所有问题.

    2023-02-06 10:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有