So che questa è una vecchia domanda (tipo, 5 anni) ma stavo lottando con la stessa cosa. La risposta completa è nei commenti all'altra risposta, ma ho pensato di offrire un esempio completo qui.
string query = "SELECT * FROM MyTableName WHERE Foo = @Foo AND Bar = @Bar";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Foo", "foo");
dictionary.Add("@Bar", "bar");
var results = connection.Query<MyTableName>(query, new DynamicParameters(dictionary));
Oppure, per essere completamente dinamico, puoi creare un metodo come questo, che accetta qualsiasi modello, qualsiasi query e qualsiasi set di parametri di query:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
E poi per chiamare questo metodo:
var results = Get<MyTable>(query, dictionary)
MODIFICA LUNGO DOPO
Questa risposta continua a ricevere voti positivi, quindi a quanto pare è ancora una necessità. Ho preso questa soluzione e ho creato un intero pacchetto NuGet per l'accesso ai dati basato su Dapper. Riduce il CRUD e le operazioni di query a una singola riga di codice.
Ecco il pacchetto NuGet .
new DynamicParameters(dictionary)
e funzionerà benissimo.