Apabila bekerja dengan ORM Dapper, adalah perkara biasa untuk menghadapi pertanyaan yang termasuk klausa IN. Walau bagaimanapun, jika nilai untuk klausa IN dijana secara dinamik daripada logik perniagaan, anda mungkin tertanya-tanya tentang pendekatan terbaik untuk membina pertanyaan sedemikian.
Satu kaedah yang telah digunakan ialah penggabungan rentetan, tetapi ini boleh menyusahkan dan terdedah kepada kelemahan suntikan SQL. Untuk mengelakkan isu ini, Dapper menyediakan teknik pemetaan parameter lanjutan yang membolehkan anda menentukan parameter untuk klausa IN.
Dapper menyokong penggunaan parameter untuk klausa IN secara langsung. Untuk menggunakan ciri ini, anda boleh mengikuti langkah berikut:
string sql = "SELECT * FROM SomeTable WHERE id IN @ids";
var parameters = new { ids = new[] { 1, 2, 3, 4, 5 } };
var results = conn.Query(sql, parameters);
Pendekatan ini lebih ringkas dan selamat daripada penggabungan rentetan dan membolehkan anda menentukan dengan mudah senarai nilai dinamik untuk klausa IN.
Jika anda menggunakan PostgreSQL, sintaks untuk klausa IN adalah sedikit berbeza. Daripada menggunakan pemegang tempat parameter, anda boleh menggunakan operator ANY untuk menentukan nilai untuk klausa IN. Contohnya:
string sql = "SELECT * FROM SomeTable WHERE id = ANY(@ids)";
Hanya ingat untuk melaraskan objek parameter dengan sewajarnya:
var parameters = new { ids = new[] { 1, 2, 3, 4, 5 } };
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Klausa IN Dapper dengan Selamat dengan Nilai Dijana Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!