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\" 处或附近出现语法错误
Laravel 4 Eloquent 动态 Where 子句