14

既知のパラメーター セットを使用して Dapper でクエリを実行しようとしていますが、それらのパラメーターの値のリストを使用しています。私がやろうとしていることの簡単な例は次のとおりです。

DateTime endDate = DateTime.Now;
DateTime startDate = endDate.AddHours(-24);

string query = "select COUNT(*) from Test where Status = @Status AND DateCreated <= @Hour;";
var stuff = con.Query(query, (startDate).ByHourTo(endDate).Select(hour => new
{
     Status = 1,
     Hour = hour,
}));

Dapper は、「パラメーター '@Status' を定義する必要があります」という例外をスローします。Dapper が一括挿入および更新を行うときにパラメーターのリストを処理できることは知っていますが、選択に対してはこれを行うことはできませんか?

4

4 に答える 4

24

これを試して:

List<string> names = new List<string> { "Bob", "Fred", "Jack" };
string query = "select * from people where Name in @names";
var stuff = connection.Query<ExtractionRecord>(query, new {names});
于 2012-11-08T15:08:05.280 に答える
9

ああ、私はあなたが言っていることを理解していると思います...

はい、Executeクエリではサポートされていませんが、サポートされているシナリオがあります。具体的には、さまざまなパラメーター値の範囲で同じ操作を順番に実行することです。これは の場合は理にかなってExecuteいますが、クエリの場合は、 を使用して別のクエリを調べる必要があることを意味しますin。または、単にループして連結します。

代わりに、単一のパラメーター オブジェクトを見て、パブリック値を探しています。列挙型には、dapper に適したパラメーター値がありません。

于 2012-11-08T16:46:09.530 に答える