Ich weiß, dass dies eine alte Frage ist (etwa 5 Jahre alt), aber ich hatte mit der gleichen Sache zu kämpfen. Die vollständige Antwort finden Sie in den Kommentaren zur anderen Antwort, aber ich dachte, ich würde hier ein vollständiges Beispiel anbieten.
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));
Um vollständig dynamisch zu sein, können Sie eine Methode wie diese erstellen, die jedes Modell, jede Abfrage und jeden Satz von Abfrageparametern akzeptiert:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
Und dann, um diese Methode aufzurufen:
var results = Get<MyTable>(query, dictionary)
LANG NACH BEARBEITEN
Diese Antwort erhält weiterhin positive Stimmen, daher ist dies anscheinend immer noch ein Bedürfnis. Ich habe diese Lösung genommen und ein komplettes NuGet-Paket für den Datenzugriff erstellt, das auf Dapper basiert. Es reduziert Ihre CRUD- und Abfrageoperationen auf eine einzige Codezeile.
Hier ist das NuGet-Paket .
new DynamicParameters(dictionary)
und es gut funktioniert.