может dapper заменить имя таблицы?

Я ожидал, что dapper-dot-net сможет заменить имя таблицы в таком запросе:

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

Однако, похоже, это не заменяет имя таблицы. Это ожидаемое ограничение?


person Brannon    schedule 07.06.2013    source источник


Ответы (1)


За единственным исключением «in» (где dapper предлагает некоторое колдовство), dapper является прямым инструментом ADO.NET — он не изменяет запрос. Итак, реальный вопрос: можете ли вы параметризовать имя таблицы в SQL? В каждой базе данных, которую я знаю: нет, вы не можете - значит, это недействительно. Dapper не пытается решить эту проблему.

Возможно, рассмотрите string.Format, помня:

  • внести в белый список допустимые имена таблиц, чтобы предотвратить внедрение SQL
  • использовать полную нотацию [square brackets] вокруг имени таблицы, чтобы разрешить полный диапазон возможных имен
person Marc Gravell    schedule 07.06.2013