Passer le nom du champ dans la requête dapper

c# dapper

Question

Je crée une fonction où je vérifie si un jour de maintenance est vérifié dans la base de données. Chaque colonne correspond à Maintenance + DayName (MaintenanceSunday, MaintenanceMonday, etc.).

Il semble que chaque fois que vous passez un objet, il veut prendre la valeur de ce qui est vérifié et ne pas "injecter" la chaîne. Existe-t-il un moyen d'y parvenir en toute sécurité (c.-à-d. Pas String.Format ("où {0} = ...", champ))? Je ne veux vraiment pas ouvrir la possibilité de l'injection SQL ici (bien qu'il y ait une vérification plus tôt pour voir si q.ToUpper () est dans une liste de "DIMANCHE", "LUNDI", etc. sauvegarde)

J'ai essayé ceci, mais il y a des bombes qui tentent de comparer le 'Maintenancesunday' à la vraie (bit):

string field = "Maintenance" + q; // q = "sunday"
return conn.Query<Data>("SELECT * FROM Data WHERE @Field = @Value", new { Field = field, Value = true }).ToList();

Réponse acceptée

Dapper utilise simplement ADO.NET, qui ne prend pas en charge les noms de colonne paramétrés. Je suppose que vous avez besoin d'un codage difficile pour y parvenir.




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