我尝试使用EntityFramework执行sql语句有什么问题

时间:2014-01-24 23:18:19

标签: sql-server entity-framework

以下作品:

var s = string.Format("drop table {0};", tableName);
context.Database.ExecuteSqlCommand(s);

但是为了避免注射,我试图使用参数版本

context.Database.ExecuteSqlCommand(@"drop table {0};", tableName);

然而,这给了我一个错误“@ p0'附近的语法不正确。”

我也尝试了,但我得到了类似的结果。

1 个答案:

答案 0 :(得分:1)

表名不能参数化。

为避免注入,您可以做的最好的事情是模拟TSQL QUOTENAME函数。确保表名不超过128个字符。将其换成[]并将所有嵌入的]替换为]]

基于任意用户输入执行DROP TABLE本身听起来非常不寻常/有问题。