Dapper ORM を使用する場合、IN 句を含むクエリがよく発生します。ただし、IN 句の値がビジネス ロジックから動的に生成される場合、そのようなクエリを構築する最適な方法について疑問に思うかもしれません。
使用されている方法の 1 つは文字列の連結ですが、これは面倒になる可能性があります。 SQL インジェクションの脆弱性が発生しやすいです。これらの問題を回避するために、Dapper は、IN 句のパラメータを指定できる高度なパラメータ マッピング手法を提供します。
Dapper は、IN 句のパラメータの直接使用をサポートしています。この機能を使用するには、次の手順に従います。
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);
このアプローチは、文字列連結よりも簡潔かつ安全であり、次のことが可能です。 IN 句の値の動的なリストを簡単に指定できます。
PostgreSQL を使用している場合、IN 句の構文は少し異なります。パラメーター プレースホルダーを使用する代わりに、ANY 演算子を使用して IN 句の値を指定できます。例:
string sql = "SELECT * FROM SomeTable WHERE id = ANY(@ids)";
それに応じてパラメータ オブジェクトを調整することを忘れないでください:
var parameters = new { ids = new[] { 1, 2, 3, 4, 5 } };
以上が動的に生成された値で Dapper の IN 句を安全に使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。