如何逃避' @'在Dapper查询?

时间:2014-07-22 20:17:27

标签: sql-server tsql dapper

我的查询应包含符号文字(@)。如何用Dapper查询表达这个?

var num = cnx.Query<int>("declare @foo int = 2; select @foo").Single();

我尝试使用文字作为解决方法:

var num = cnx.Query<int>(
    "declare {=at}foo int = 2; select {=at}foo", new { at = "@" }
).Single();

但由于不支持字符串文字,因此抛出NotSupportedException ...

(请注意,在我的真实代码中,我有其他@parameters,我实际上想要替换并自动转义给我,所以我宁愿坚持使用Dapper,如果可能的话,而不是仅使用原始{{1 }}。)

1 个答案:

答案 0 :(得分:6)

喔。我想到了。如果您的@param实际上并未绑定到任何内容,则会将其按原样传递给基础SqlCommand,然后将其直接传递给数据库。

换句话说,你不需要做任何特别的事情来让它发挥作用。我的第一个例子应该运行正常。傻我。