Come chiamare un provider L2S per tradurre un predicato in forma di Func a una clausola SQL dove?

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

Domanda

Sto usando L2S nella mia applicazione, ma sto passando sempre più a dapper.net perché ho grossi problemi con le prestazioni delle query e il fastidioso n + 1 seleziona il problema.

Funziona bene, ma mi manca il comodo stile LINQish dei predicati di scrittura quando si filtrano i dati.

Quindi la mia domanda è, come posso tradurre un predicato in forma di Func<T, bool> in una clausola SQL Server dove usarlo con dapper?

Penso che qualcuno debba averlo fatto prima, o tutti gli utenti del dapper maneggiano le loro istruzioni SQL?

Come suggerisce il titolo, forse è un'opzione per chiamare il provider LINQ2SQL per SQL Server?

Fondamentalmente sto cercando qualcosa di simile all'inverso di linq dinamico.

Risposta popolare

Ci sono modi per vedere l'SQL generato da LINQ. Vedi l'articolo Vedere l'SQL generato da LINQ alle query di entità da Visual Studio Magazine.

Ora che capisco meglio cosa cerchi, ho approfondito questo aspetto e ho trovato un paio di post correlati che vale la pena dare un'occhiata:

La clausola dynamic where in dapper che suggerisce l'uso di un Stringbuilder, ma uno dei commenti punta a un articolo di Sam Saffron, Porting LINQ-2-SQL a Dapper per grande giustizia , che parla di un SqlBuilder che potrebbe aiutarti.

Genera una clausola SQL utilizzando un'espressione da Linq a Sql che suggerisce l'utilizzo di una LINQ Dove chiama e acquisisce la clausola WHERE dall'SQL generato.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché