dapper 中的动态 where 子句

Posted

技术标签:

【中文标题】dapper 中的动态 where 子句【英文标题】:Dynamic where clause in dapper 【发布时间】:2011-10-15 12:15:16 【问题描述】:

是否可以使用 dapper 即时添加和删除条件?我需要这个来实现用户驱动的过滤。对每个过滤器进行查询是不可行的,因为组合太多。

【问题讨论】:

【参考方案1】:

在最基本的层面上,您可以在 StringBuilder 中动态构建 TSQL - 添加额外的 and c.Name = @name 等。不用担心额外的参数;将它们全部发送 - 库检查命令并且不添加任何明显未使用的参数。对于这个特定场景,还有第二个更新的 API,但如果不检查,我不记得具体细节(而且我不在电脑旁)。我可以稍后尝试添加更多细节(假设 Sam 没有)。

【讨论】:

我目前正在将 sql 构建为字符串。问题是我在 WHERE 中使用了许多 IN。有些有时是空集合,因此它错误地将空集合传递给它。理想情况下,如果集合中有要过滤的项目,我只希望添加 IN 子句。 @NabilS 但如果你不 add 那部分 where,它应该仍然可以正常工作 - 但我会调查 @NabilS 见:samsaffron.com/archive/2011/09/05/… 感谢 Sam,正是我正在寻找的东西。我将如何处理一个子句中的多个或。它们只会根据条件添加。据我所知,这在 API 中是不可能的。 @MattiasNordqvist 没有;只要实际输入是通过参数处理的,它们应该是(我在答案中鼓励)

以上是关于dapper 中的动态 where 子句的主要内容,如果未能解决你的问题,请参考以下文章

带有 dapper 和 postgresql 的“WHERE x IN y”子句抛出 42601:在 \"$1\" 处或附近出现语法错误

动态sql中的where子句

where 子句中的动态值

Laravel 4 Eloquent 动态 Where 子句

Snowflake Javascript UDTF 中的动态 where 子句

Linq to Entities 中的动态 where 子句 (OR)