मुझे पता है कि यह एक पुराना सवाल है (जैसे, 5 साल पुराना) लेकिन मैं उसी चीज से जूझ रहा था। पूर्ण उत्तर अन्य उत्तर के लिए टिप्पणियों में है, लेकिन मुझे लगा कि मैं यहां एक पूर्ण उदाहरण पेश करूंगा।
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));
या, पूरी तरह से गतिशील होने के लिए, आप इस तरह की एक विधि बना सकते हैं, जो किसी भी मॉडल, किसी भी क्वेरी, और क्वेरी मापदंडों के किसी भी सेट को ले जाएगा:
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
और फिर इस विधि को कॉल करने के लिए:
var results = Get<MyTable>(query, dictionary)
संपादित करें लंबी अवधि के बाद
यह उत्तर आगे बढ़ता रहता है, इसलिए यह स्पष्ट रूप से अभी भी एक आवश्यकता है। मैंने इस समाधान को लिया और डैपर के शीर्ष पर निर्मित एक संपूर्ण डेटा एक्सेस नुगेट पैकेज बनाया। यह आपके CRUD और क्वेरी ऑपरेशंस को कोड की एक सिंगल लाइन तक कम करता है।
यहाँ NuGet पैकेज है ।
new DynamicParameters(dictionary)
और यह ठीक काम करेगा।