可以简洁地替换表名

  • 本文关键字:替换 简洁 c# dapper
  • 更新时间 :
  • 英文 :


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

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

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

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

可以考虑string。格式,记住:

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

最新更新