Saya tahu ini adalah pertanyaan lama (seperti, 5 tahun) tetapi saya berjuang dengan hal yang sama. Jawaban lengkapnya ada di komentar di jawaban lain, tapi saya pikir saya akan menawarkan contoh lengkapnya di sini.
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));
Atau, agar sepenuhnya dinamis, Anda dapat membuat metode seperti ini, yang akan menggunakan model apa pun, kueri apa pun, dan kumpulan parameter kueri apa pun:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
Dan kemudian memanggil metode ini:
var results = Get<MyTable>(query, dictionary)
EDIT PANJANG SETELAH
Jawaban ini terus mendapatkan upvote, jadi ini sepertinya masih perlu. Saya mengambil solusi ini dan membuat paket NuGet akses data keseluruhan yang dibangun di atas Dapper. Ini mengurangi operasi CRUD dan kueri Anda menjadi satu baris kode.
Berikut paket NuGet .
new DynamicParameters(dictionary)
dan itu akan bekerja dengan baik.