2011-10-15 14 views
9

È possibile aggiungere e rimuovere i criteri al volo con dapper? Ho bisogno di questo per implementare il filtraggio guidato dall'utente. Non è possibile avere una query per ogni filtro poiché ci sono troppe combinazioni.Clausola dynamic where in dapper

risposta

3

Al livello più semplice, è possibile creare il TSQL in modo dinamico in un StringBuilder - aggiungendo and c.Name = @name extra ecc. Non preoccuparti dei parametri aggiuntivi; inviarli tutti - la libreria controlla il comando e non aggiunge alcun parametro che ovviamente non viene utilizzato. Esiste una seconda API più recente per questo specifico scenario, ma non riesco a ricordare le specifiche senza controllare (e non sono al computer). Posso provare ad aggiungere ulteriori dettagli in seguito (supponendo che Sam non lo faccia).

+0

Attualmente sto creando SQL come stringa. Il problema è che sto usando un numero di IN nel WHERE. Alcune sono a volte raccolte vuote e quindi trasmettono in modo errato raccolte vuote. Idealmente, voglio solo aggiungere la clausola IN se ci sono elementi nella raccolta da filtrare. – NabilS

+0

@NabilS ma se non si * aggiunge * quella parte di dove, dovrebbe comunque funzionare correttamente, ma indagherò su –

+1

@NabilS vedere: http://samsaffron.com/archive/2011/09/05/ Scavando + noi stessi + fuori + di + il mess + Linq-2-SQL + creato # commentsTitle –