2011-09-22 17 views
10

Desidero eseguire la seguente query utilizzando Dapper, che attualmente non restituisce risultati previsti (penso che debba trattarsi del parametro @pName come testo letterale all'interno delle virgolette singole?):Clausola LIKE parametrizzata nell'istruzione SQL utilizzando Dapper

var q = "SELECT * FROM Users WHERE Name LIKE '@pName%'"; 

@pName è il parametro a cui assegno un valore all'esecuzione della query.

Le cose funzionano se ho solo costruire lo SQL come:

var q = "SELECT * FROM Users WHERE Name LIKE '" + name + "%'"; 

.. ma io preferirei usare un parametro, se possibile.

sto eseguendo la query utilizzando il seguente codice:

o = _cn.Query<User>(q, new { pName = new DbString { Value = name, IsFixedLength = false, Length = 25, IsAnsi = true } }).ToList(); 

Come ho ottenuto su questo usando Dapper?

+2

assicurarsi che si ricordi di fuggire il tuo clausola LIKE (si veda il commento sulla risposta) –

risposta

15
SELECT * FROM Users WHERE Name LIKE @pName + '%' 
+3

Assicurati di fuggire il tuo clausola LIKE però: http://stackoverflow.com/questions/439495/tsql-like-escape-clause –

+0

@ Sam: buon punto. –

+0

Grazie Sam. Non avevo familiarità con questo, quindi lo aggiungerò. – marcusstarnes