Saya memiliki kamus nilai Misalnya "Nama": "Alex"
Adakah cara untuk meneruskan ini ke Dapper sebagai argumen untuk kueri?
Berikut adalah contoh yang menunjukkan apa yang ingin saya lakukan.
IDictionary<string, string> args = GetArgsFromSomewhere();
string query = "select * from people where Name = @Name";
var stuff = connection.Query<ExtractionRecord>(query, args);
new DynamicParameters(dictionary)
dan itu akan bekerja dengan baik.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 .
sumber
Seseorang juga dapat menggunakan an
ExpandoObject
sebagai parameter kueri, sebagai ganti kelas khusus DapperDynamicParameters
:ExpandoObject param = new ExpandoObject(); IDictionary<string, object> paramAsDict = param as IDictionary<string, object>; paramAsDict.Add("foo", 42); paramAsDict.Add("bar", "test"); MyRecord stuff = connection.Query<MyRecord>(query, param);
sumber