ホームページ > データベース > mysql チュートリアル > 動的に生成された値で Dapper の IN 句を安全に使用する方法は?

動的に生成された値で Dapper の IN 句を安全に使用する方法は?

Linda Hamilton
リリース: 2025-01-05 17:17:41
オリジナル
992 人が閲覧しました

How to Safely Use Dapper's IN Clause with Dynamically Generated Values?

Dapper ORM を使用した IN 句によるクエリ

Dapper ORM を使用する場合、IN 句を含むクエリがよく発生します。ただし、IN 句の値がビジネス ロジックから動的に生成される場合、そのようなクエリを構築する最適な方法について疑問に思うかもしれません。

使用されている方法の 1 つは文字列の連結ですが、これは面倒になる可能性があります。 SQL インジェクションの脆弱性が発生しやすいです。これらの問題を回避するために、Dapper は、IN 句のパラメータを指定できる高度なパラメータ マッピング手法を提供します。

ソリューション

Dapper は、IN 句のパラメータの直接使用をサポートしています。この機能を使用するには、次の手順に従います。

  1. IN 句パラメーターのプレースホルダーを使用してクエリを定義します。例:
string sql = "SELECT * FROM SomeTable WHERE id IN @ids";
ログイン後にコピー
  1. IN 句パラメータの値を含むオブジェクトを作成します。この例では、整数値の配列を含む ids プロパティを持つ匿名オブジェクトを作成します。
var parameters = new { ids = new[] { 1, 2, 3, 4, 5 } };
ログイン後にコピー
ログイン後にコピー
  1. Query メソッドを使用してクエリを実行し、パラメータ オブジェクトを次のように渡します。 2 番目の引数:
var results = conn.Query(sql, parameters);
ログイン後にコピー

このアプローチは、文字列連結よりも簡潔かつ安全であり、次のことが可能です。 IN 句の値の動的なリストを簡単に指定できます。

PostgreSQL ユーザー向けのメモ

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート