これは古い質問(5歳など)ですが、同じことで苦労していました。完全な答えは他の答えへのコメントにありますが、私はここで完全な例を提供すると思いました。
string query = "SELECT * FROM MyTableName WHERE Foo = @Foo AND Bar = @Bar";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Foo", "foo");
dictionary.Add("@Bar", "bar");
var results = connection.Query<MyTableName>(query, new DynamicParameters(dictionary));
または、完全に動的にするために、次のようなメソッドを作成できます。このメソッドは、任意のモデル、任意のクエリ、および任意のクエリパラメータのセットを受け取ります。
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
そして、このメソッドを呼び出すには:
var results = Get<MyTable>(query, dictionary)
後で長く編集する
この答えは引き続き賛成票を集めているので、これは明らかにまだ必要です。私はこのソリューションを採用し、Dapper上に構築されたデータアクセスNuGetパッケージ全体を作成しました。CRUDとクエリの操作を1行のコードに減らします。
これがNuGetパッケージです。
new DynamicParameters(dictionary)
、それがうまくいくことに注意してください。