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,在小巧玲珑的程序集/命名空间内:

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 回答