Bunun eski bir soru olduğunu biliyorum (5 yaşında gibi) ama aynı şeyle uğraşıyordum. Tam cevap, diğer cevaba yapılan yorumlarda, ancak burada tam bir örnek sunacağımı düşündüm.
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));
Veya tamamen dinamik olmak için, herhangi bir modeli, herhangi bir sorguyu ve herhangi bir sorgu parametresi kümesini alacak olan bunun gibi bir yöntem oluşturabilirsiniz:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
Ve sonra bu yöntemi çağırmak için:
var results = Get<MyTable>(query, dictionary)
SONRA UZUN DÜZENLE
Bu cevap olumlu oylar almaya devam ediyor, bu yüzden görünüşe göre bu hala bir ihtiyaç. Bu çözümü aldım ve Dapper üzerine inşa edilmiş tam bir veri erişimi NuGet paketi oluşturdum. CRUD ve sorgu işlemlerinizi tek bir kod satırına indirger.
İşte Nuget paketi .
new DynamicParameters(dictionary)
ve iyi çalışacağını unutmayın.