可以小巧的取代表名吗?

时间:2013-06-07 20:45:50

标签: c# dapper

我原本以为dapper-dot-net可以在这样的查询中替换表名:

connection.Query("SELECT * FROM @Table WHERE [Id] = @Id", new {Table = tb, Id = id});

但是,似乎没有替换表名。这是预期的限制吗?

1 个答案:

答案 0 :(得分:5)

除了“in”(dapper提供某些巫术)之外,dapper是一个直接的ADO.NET工具 - 它不会改变查询。所以真正的问题是:你能在SQL中参数化表名吗?在我知道的每个数据库中:不,你不能 - 所以这是无效的。 Dapper并不试图解决这个问题。

也许考虑一下string.Format,记住:

  • 以白名单列出合法的表名以防止SQL注入
  • 在表名周围使用完整的[square brackets]表示法以允许全部可能的名称