如何调用L2S提供程序以Func的形式翻译谓词到SQL where子句?

dapper linq-to-sql predicate sql sql-server-2008

我在我的应用程序中使用L2S,但我正在越来越多地转向dapper.net,因为我遇到了查询性能方面的重大问题,烦人的n + 1选择了问题。

它的工作正常,但我错过了在过滤数据时编写谓词的舒适LINQish风格。

所以我的问题是,如何将Func<T, bool>形式的谓词转换为SQL Server where子句,将其与dapper一起使用?

我认为有人必须在此之前完成此操作,或者是所有精巧的用户手工编码他们的sql语句?

正如标题所示,也许可以选择为SQL Server调用LINQ2SQL提供程序?

基本上我正在寻找类似动态linq的反转。

热门答案

有很多方法可以查看LINQ生成的SQL。请参阅Visual Studio Magazine中的“ 查看LINQ to Entity查询生成的SQL ”一文。

现在我更了解你所追求的是什么,我做了一些研究,发现了一些值得一看的相关帖子:

dapper中的动态where子句建议使用Stringbuilder,但其中一条注释指向Sam Saffron的文章,将LINQ-2-SQL移植到Dapper以获得极大的正义 ,该文章讨论了可能对您有帮助的SqlBuilder。

使用Linq-to-Sql表达式生成SQL子句 ,建议使用LINQ Where调用并从生成的SQL中获取WHERE子句。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因