对于为SQL查询设置参数感到困惑

时间:2013-10-31 14:55:07

标签: c# sql sql-server orm dapper

我正在使用Dapper ORM来查询我的数据库。我已经熟悉了查询语法,但是我遇到了参数问题。

以下是有效的查询:

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

这会将myQuery中的参数(@ Sherler,@ Status,@ query)映射到这些值,并且它可以正常工作。

但是,在我的程序中,我会动态生成参数并将它们存储在List<ObjectParameter>中,因此每个参数都有一个名称和一个值。但是,我无法在查询中正常工作。以下是不起作用的示例:

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

我也尝试将其转换为List<SqlParameter>,但这也无效。有谁知道如何使用我的参数列表复制工作查询?

1 个答案:

答案 0 :(得分:2)

ObjectParameter是一个EF的东西(System.Data.Entity.dll),并没有在小巧玲珑中使用。你想在{dapper assembly / namespace中找到DynamicParameters

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

如果你想要更多控制 - 比如你真的想要使用ObjectParameter - 那也没关系:你只需编写自己的类型来实现SqlMapper.IDynamicParameters,并且将它传递给精致的人。