Je veux créer une requête où le nom de table sera dynamique et je l'obtiendrai d'une autre requête. Les 2 requêtes se trouvent dans des datacontexts différents.Requête C# avec nom de table dynamique
CODE
var tablename = (from tab in db.Tabs
where tab.id == tabid
select tab.name).FirstOrDefault();
var pid = (from p in tablename
select p.id).FirstOrDefault();
Dans ce cas, vous devez écrire vos instructions SQL sur vous-même. Mais vous devriez utiliser la classe 'SqlCommand' et sa propriété' Parameters' pour éviter les attaques par injection. – Oliver
@Oliver Comment puis-je faire cela? – alxem
Dans la deuxième requête, ce que vous faites est d'interroger une chaîne, pas la table elle-même. Évidemment, cela ne donnera pas le résultat que vous voulez. Si vous écrivez votre propre instruction sql, notez que vous ne pouvez pas paramétrer les identifiants en sql, vous devrez donc soit créer le texte de requête dans votre code C# (avec un risque d'injection sql minimisé, puisque vous n'intervenez pas ici), ou créez une procédure stockée qui utilise sql dynamique à l'intérieur (où vous avez une meilleure chance de vous défendre contre les attaques par injection de sql). –