Dapper peut-il remplacer le nom de la table?

c# dapper

Question

Je m'attendais à ce que dapper-dot-net puisse remplacer le nom de la table dans une requête comme celle-ci:

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

Cependant, il semble ne pas remplacer le nom de la table. Est-ce une limitation attendue?

Réponse acceptée

A la seule exception de "in" (où dapper propose du vaudou), dapper est un outil ADO.NET direct - il ne modifie pas la requête. La vraie question est donc la suivante: pouvez-vous paramétrer un nom de table en SQL? Dans toutes les bases de données que je connais: non, vous ne pouvez pas - ce n'est pas valide. Dapper ne tente pas de résoudre ce problème.

Peut-être considérez string.Format, en vous rappelant:

  • faire une liste blanche des noms de table légaux pour empêcher l'injection SQL
  • utiliser la notation [square brackets] complète autour du nom de la table pour autoriser la gamme complète des noms possibles


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi