1. ホーム
  2. c#

[解決済み] Dapperクエリの引数を動的に作成する方法

2023-02-09 20:37:57

質問

Eg "Name": "Alex" という値の辞書を持っています。

これをクエリの引数としてDapperに渡す方法はありますか?

私がやりたいことを示す例です。

IDictionary<string, string> args = GetArgsFromSomewhere();
string query = "select * from people where Name = @Name";
var stuff = connection.Query<ExtractionRecord>(query, args);

どのように解決するのですか?

はい。

var dbArgs = new DynamicParameters();
foreach(var pair in args) dbArgs.Add(pair.Key, pair.Value);

次に dbArgs の代わりに args :

var stuff = connection.Query<ExtractionRecord>(query, dbArgs);

を実装した独自のクラスを作成することもできます。 IDynamicParameters .

オブジェクトから始める場合(dapperの通常のアプローチ)、このテンプレートに DynamicParameters を出発点として使うこともできます。

var dbArgs = new DynamicParameters(templateObject);