1

我曾期望 dapper-dot-net 可以在这样的查询中替换表名:

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

但是,它似乎不能替换表名。这是预期的限制吗?

4

1 回答 1

5

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

也许考虑 string.Format,记住:

  • 将合法的表名列入白名单以防止 SQL 注入
  • 在表名周围使用完整的[square brackets]符号以允许所有可能的名称
于 2013-06-07T21:11:42.280 回答