在dapper查询中传递字段名称

时间:2015-02-12 16:09:14

标签: c# dapper

我正在创建一个函数,我在其中检查数据库中是否检查了维护日。每列都是Maintenance + DayName(MaintenanceSunday,MaintenanceMonday等)。

看来,无论何时传入一个对象,它都希望获取正在检查的内容的值,而不是“注入”该字符串。有没有办法安全地实现这一点(即不是String.Format(“where {0} = ...”,field))?我真的不想在这里开辟SQL注入的可能性(虽然有一个早期的检查,看看q.ToUpper()是否在“星期日”,“星期一”等列表中,所以我猜有那个保障)

我尝试了这个,但它试图将'Maintenancesunday'与true(bit)进行比较:

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

1 个答案:

答案 0 :(得分:3)

Dapper只使用ADO.NET,它不支持参数化列名。我想你需要一些硬编码来实现这一目标。