Dapper AddDynamicParams 用于 Postgres 中带有 IEnumerable 参数的 IN 查询

2024-04-08

首先,我遇到了与两年前讨论过的相同问题,据称该问题已得到解决。有关该问题,请参阅以下问题:

Dapper AddDynamicParams for IN 语句,具有“动态”参数名称 https://stackoverflow.com/questions/12723922/dapper-adddynamicparams-for-in-statement-with-dynamic-parameter-name

我遇到的问题是,当我执行类似的查询时(SELECT * FROM MyTable WHERE MyId IN @myIds)针对我的 Postgres 9.3 数据库,我收到以下异常:

Npgsql.NpgsqlException : ERROR: 42883: operator does not exist: integer = integer[]

我执行此查询的代码如下:

List<MyTable> result;

var query = "SELECT * FROM MyTable WHERE MyId IN @myIds";
var queryParams = new Dictionary<string, object> {
    { "myIds", new [] { 5, 6 } }
};

var dynamicParams = new DynamicParameters(queryParams);
using (var connection = new NpgsqlConnection(connectionString)) {
    result = connection.Query<MyTable>(query, dynamicParams).ToList();
}

return result;

如果相反,我在 Dapper 的 (v1.29) SqlMapper.PackListParameters 函数中放置一个断点就行if (FeatureSupport.Get(command.Connection).Arrays)并手动将执行移至 else 部分,然后查询运行并返回预期结果。

我注意到.Arrays属性明确调用 Postgres 作为受支持的数据库,所以我想知道:这是我的代码、Dapper 代码、Dapper 配置或 Postgres 配置的问题吗?是否有无需修改 Dapper 代码库的解决方法?谢谢。


是的,这看起来像是与 postgres 中数组类型的处理相关的错误;这是 postgres 特有的,因此与您提到的“据称已修复”帖子无关。老实说:我对 postgres 数组了解不多 - 该代码来自用户贡献 IIRC。我很想知道如果您使用本机 postgres 语法它是否有效,即

WHERE MyId = ANY(@myIds)

不过,我同意如果我们能够在任一 RDBMS 上使用相同的语法那就太好了。

但实际上,它已经标记了该代码中需要修复的另一个错误(在FeatureSupport抬头)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dapper AddDynamicParams 用于 Postgres 中带有 IEnumerable 参数的 IN 查询 的相关文章

随机推荐

  • 什么是沼泽图?

    有人告诉我沼泽图 解释说它们可以通过测量给定产品的传入缺陷率和传出修复率来预测代码质量 不幸的是 我无法找到有关这些图表的更多信息 我想知道这是否是特定于一家公司的术语 你能解释一下什么是沼泽图吗 您可以在这篇关于 CESR 的调试和性能特
  • 在Python中获取不带扩展名的文件名

    如果我有一个类似于以下之一的文件名 1 1 1 1 1 jpg 1 1 jpg 1 jpg 我怎样才能只获取文件名 而不获取扩展名 正则表达式合适吗 在大多数情况下 您不应该为此使用正则表达式 os path splitext filena
  • 如何在异步管道上使用自定义管道?

    我正在尝试在异步管道上创建自定义管道 我尝试了很多解决方案 但仍然不起作用 这是代码片段 Product sort ts 自定义管道 import PipeTransform Pipe from angular core import Ob
  • Angular 4 属性在构建时的对象类型上不存在

    我正在使用 Angular 构建一个项目 我使用 angular cli 启动了该项目 当我尝试运行时ng build prod我不断收到此错误 对象类型上不存在属性 描述 生成此错误的代码如下 export class AppCompon
  • 基于 Spring Java 的静态方法配置

    任何人都可以请建议为什么我们需要使用 a 来声明 PropertySourcesPlaceholderConfigurer beanstatic方法 我刚刚发现 如果我在下面使用非静态 那么 url 将被设置为空值 而不是从属性文件中获取
  • 使用 JavaScript 对象文字表示法的 JavaScript 构造函数

    使用对象字面量表示法在 JavaScript 中构建构造函数的最佳方法是什么 var myObject funca function funcb function 我希望能够打电话 var myVar new myObject 并将参数传递
  • 使用 JavaScript 关闭 Youtube 注释

    目前我知道有三种方法可以禁用 YouTube 视频中的注释 您可以使用 YouTube 设置 这对我不起作用 因为我没有 也不想要 帐户 您可以使用专门的扩展 这可能有用 但我不想为此而拥有一个带有大量选项的成熟扩展 您可以使用 广告 拦截
  • PHPUnit ReflectionException 方法套件不存在

    我正在使用 PHPUnit 版本 3 6 2 并且总是得到 PHP ReflectionException 第 113 行 pathTo pear PHPUnit Runner BaseTestRunner php 中不存在方法套件 运行单
  • 如何通过eclipse连接mysql数据库

    我有一个在 eclipse kepler 中运行的应用程序 我的数据库位于AWS RDS MySQL类型上 我已经导入 mysql connector java gpl 5 1 31 msi 和 aws java sdk 1 8 5 jar
  • 无法使用 WiX 安装程序创建注册表项值

    以下组件按预期执行所有操作 但无法写入最后一个注册表项值 我没有收到任何错误
  • 无法找到哈希字符串“android-P”的目标

    我正在跟进this https codelabs developers google com codelabs mdc 101 java 1教程页面 我得到了与他们在该页面中所说的完全相同的错误 无法在以下位置找到哈希字符串 android
  • 使用 Twitter API 可以追溯到多久以前

    我用 C 开发了一个应用程序 可以将推文提取到数据库中 我目前正在使用 TweetSharp Wrapper 由于最近宣布 Twitter 现在已经对之前的所有推文建立了索引 这使您可以返回到最初的推文 因此我开始怀疑是否有可能返回到某个时
  • RMarkdown 文档中的条件格式表

    例如 我可能想使用以下规则为单元格着色 编辑为不平凡 如果 gt 4 则呈蓝色 如果 3 5 则不填充 如果 gt 3 且 如果 使用 RMarkdown knit 创建具有条件格式的表格 https stackoverflow com q
  • Django:如何允许可疑文件操作/复制文件

    我想做一个SuspiciousFileOperationdjango 默认是不允许的 我正在编写一个命令 通过运行manage py importfiles 在我自己编写的 Django 文件存储中导入真实文件系统上给定的目录结构 我想 这
  • 如何让 js-mode 正确缩进连续(复合?)var 声明?

    如果我使用不同的var类似的陈述 function stretchDiv var wh window height var sz2 wh paddingTop paddingBottom mainTop 2 2 the scrollbar
  • 为什么这里断言失败

    为什么当我创建一个时断言在这里失败CvMat 我使用指针加载到 cv Mat 中的图像不会发生这种情况 struct RGB unsigned char b g r cv Point p RGB data CvMat mat cvCreat
  • iOS 14 上的 Arkit/SceneKit 抛出新警告(金属)

    自从升级到 iOS14 以来 每当我向场景添加基本节点时 我都会收到金属警告 我不使用任何阴影 只使用标准材质 2020 09 24 18 51 04 548764 0100 Arvie AR 383 7987 Metal Compiler
  • C++:在 switch 语句内构造数组

    我正在尝试构建一个具有几种不同配置的数组 其中将随机选择一个配置 我首先尝试的代码是 void createArray int tileVals int randInt rand 3 switch randInt case 0 int ti
  • 从列表中删除重复值的最佳算法

    从列表中删除重复值的最佳算法是什么 我试过这个 for int i 0 i lt AuthorCounter 1 i for int j 0 j lt AuthorCounter 1 j if i j if AuthorGroupNode
  • Dapper AddDynamicParams 用于 Postgres 中带有 IEnumerable 参数的 IN 查询

    首先 我遇到了与两年前讨论过的相同问题 据称该问题已得到解决 有关该问题 请参阅以下问题 Dapper AddDynamicParams for IN 语句 具有 动态 参数名称 https stackoverflow com questi