为什么:
IEnumerable<MyEntity> MyFunction(string sql, object [] params)
{
// EG:
// "SELECT * FROM MyTable WHERE MyField0 = @0 AND MyField1 = @1"
// params = { 1, "UK" }
return Context.Database.SqlQuery<TEntity>(sql, params);
}
...给我以下错误?:
Must declare the scalar varliable "@0"
我知道如果我这样做会起作用:
var query = Context.Database.SqlQuery<TEntity>(
"SELECT * FROM MyTable WHERE MyField0 = @0 AND MyField1 = @1", 1, "UK"
);
...但我想抽象代码并将其称为,例如:
var x = MyFunction(
"SELECT * FROM MyTable WHERE MyField0 = @0 AND MyField1 = @1", 1, "UK"
);
即,我的问题是我无法弄清楚如何传入参数数组。
编辑:
接受的答案回答了这个问题,但还有另一个问题:您需要对数组进行参数化,即,不仅仅是值,而是将它们作为命名 SqlParameters 的数组传递。看: