Cómo llamar a un proveedor de L2S para traducir un predicado en forma de Func a una cláusula SQL donde?

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

Pregunta

Estoy usando L2S en mi aplicación, pero estoy cambiando cada vez más a dapper.net porque estoy teniendo problemas importantes con el rendimiento de las consultas y el molesto n + 1 selecciona el problema.

Funciona bien, pero extraño el estilo cómodo de escritura de LINQish al filtrar datos.

Entonces mi pregunta es, ¿cómo puedo traducir un predicado en forma de Func<T, bool> a una cláusula SQL Server donde usarlo con dapper?

Creo que alguien debe haber hecho esto antes, ¿o todos los usuarios inteligentes están codificando sus sentencias sql?

Como sugiere el título, ¿tal vez sea una opción llamar al proveedor de LINQ2SQL para SQL Server?

Básicamente, estoy buscando algo así como el inverso de dynamic linq.

Respuesta popular

Hay formas de ver el SQL generado por LINQ. Vea el artículo Cómo ver el SQL generado por LINQ a consultas de entidades desde Visual Studio Magazine.

Ahora que entiendo mejor lo que buscas, investigué un poco más y encontré un par de publicaciones relacionadas que valen la pena ver:

Dynamic where cláusula en dapper que sugiere usar un Stringbuilder, pero uno de los comentarios apunta a un artículo de Sam Saffron, Porting LINQ-2-SQL a Dapper para una gran justicia , que habla de un SqlBuilder contribuido que podría ayudarte.

Genere una cláusula de SQL utilizando una expresión Linq-to-Sql que sugiera el uso de un LINQ Where call y la apropiación de la cláusula WHERE del SQL generado.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué