Je sais qu'il s'agit d'une vieille question (vieille de 5 ans), mais je me débattais avec la même chose. La réponse complète se trouve dans les commentaires de l'autre réponse, mais j'ai pensé que je pourrais offrir un exemple complet ici.
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));
Ou, pour être totalement dynamique, vous pouvez créer une méthode comme celle-ci, qui prendra n'importe quel modèle, n'importe quelle requête et n'importe quel ensemble de paramètres de requête :
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
Et ensuite pour appeler cette méthode :
var results = Get<MyTable>(query, dictionary)
ÉDITER LONGTEMPS APRÈS
Cette réponse continue d'obtenir des votes positifs, donc il semble que ce soit encore un besoin. J'ai pris cette solution et j'ai créé un paquet NuGet complet d'accès aux données construit au-dessus de Dapper. Il réduit vos opérations CRUD et de requête à une seule ligne de code.
Voici le Paquet NuGet .