我正在使用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>
但这也不起作用。有谁知道如何使用我的参数列表复制工作查询?
ObjectParameter
是一个EF的东西( System.Data.Entity.dll
),并没有在dapper中使用。你想DynamicParameters
,短小精悍装配/命名空间中:
var args = new DynamicParameters();
...
args.Add(name, value); // there are more complex usages, note
...
connection.Query<OrderView>(myQuery, args);
如果你想要更多的控制 - 例如你真的想使用ObjectParameter
- 那也没关系:你只需编写自己的类型来实现SqlMapper.IDynamicParameters
,并将其传递给dapper。