Soalan:
Cara membina pertanyaan SQL dengan klausa IN dengan cekap menggunakan ORM Dapper apabila senarai nilai untuk klausa IN diperoleh secara dinamik daripada perniagaan logik?
Jawapan:
Dapper ORM menyediakan sokongan langsung untuk senario ini. Begini cara untuk melakukannya:
string sql = "SELECT * FROM SomeTable WHERE id IN @ids"; var results = conn.Query(sql, new { ids = new[] { 1, 2, 3, 4, 5 }});
Dalam contoh ini, parameter id ditakrifkan sebagai tatasusunan integer. Senarai ID yang dipisahkan koma dalam pertanyaan asal dibina secara dinamik berdasarkan logik perniagaan dan diluluskan sebagai nilai untuk parameter id.
Jika anda menggunakan Postgres sebagai pangkalan data, sedikit pengubahsuaian diperlukan untuk betul mengendalikan tatasusunan dalam klausa IN:
// Define a custom type to represent an array of integers var postgresIntArray = new PostgresIntArray { Value = new[] { 1, 2, 3, 4, 5 } }; string sql = "SELECT * FROM SomeTable WHERE id IN @ids"; var results = conn.Query(sql, new { ids = postgresIntArray});
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Klausa IN Dapper ORM dengan Senarai Dijana Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!