Pase el nombre del campo en una consulta inteligente

c# dapper

Pregunta

Estoy creando una función donde verifico si un día de mantenimiento está marcado en la base de datos. Cada columna es Maintenance + DayName (MaintenanceSunday, MaintenanceMonday, etc.).

Parece que cada vez que pasas en un objeto, quiere tomar el valor de lo que se está comprobando y no "inyectar" la cadena. ¿Hay alguna manera de lograr esto de forma segura (es decir, no String.Format ("where {0} = ...", field))? Realmente no quiero abrir la posibilidad de inyección SQL aquí (aunque hay una comprobación anterior para ver si q.ToUpper () está en una lista de "DOMINGO", "LUNES", etc. así que supongo que hay salvaguardia)

Intenté esto, pero bombardea el intento de comparar 'Maintenancesunday' con true (bit):

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

Respuesta aceptada

Dapper solo usa ADO.NET, que no admite nombres de columnas parametrizadas. Supongo que necesitas un poco de codificación para lograr esto.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué