ฉันรู้ว่านี่เป็นคำถามเก่า (เช่นเด็ก 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)
แก้ไขนานหลังจาก
คำตอบนี้ยังคงได้รับการโหวตเพิ่มขึ้นดังนั้นจึงยังคงจำเป็น ฉันใช้โซลูชันนี้และสร้างแพ็คเกจ NuGet การเข้าถึงข้อมูลทั้งหมดที่สร้างขึ้นที่ด้านบนของ Dapper จะลด CRUD และการดำเนินการค้นหาของคุณเป็นโค้ดบรรทัดเดียว
นี่คือแพคเกจ NuGet
new DynamicParameters(dictionary)
และจะได้ผลดี