2

Dapper ORM を使用してデータベースにクエリを実行しています。クエリ構文には慣れましたが、パラメーターに問題があります。

動作するクエリは次のとおりです。

orders = ctx.Query<OrderView>(myQuery, new { Seller = 104386, StatusID = 2, query = "people"});

これにより、myQuery (@Seller、@StatusID、@query) のパラメーターがこれらの値にマップされ、正しく機能します。

ただし、私のプログラムでは、パラメーターをその場で生成して に保存するList<ObjectParameter>ため、各パラメーターには名前と値があります。ただし、これをクエリで正しく機能させることはできません。うまくいかない例を次に示します。

orders = ctx.Query<OrderView>(myQuery, parameters.toArray());

私もそれをに変換しようとしましたList<SqlParameter>が、それもうまくいきません。パラメータリストを使用して作業クエリを複製する方法を知っている人はいますか?

4

1 に答える 1

2

ObjectParameterは EF のもの ( System.Data.Entity.dll) であり、dapper では使用されません。あなたが望むDynamicParameters、dapperアセンブリ/名前空間内:

var args = new DynamicParameters();
...
args.Add(name, value); // there are more complex usages, note
...
connection.Query<OrderView>(myQuery, args);

さらに制御したい場合 (たとえば、実際に使用したい場合ObjectParameter) も問題ありません。実装する独自の型を作成しSqlMapper.IDynamicParameters、それを dapper に渡すだけです。

于 2013-10-31T14:56:47.203 に答える