Почему:
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"
);
Т.е. моя проблема в том, что я не могу понять, как передать массив параметров.
EDIT:
Принятый ответ отвечает на вопрос, но есть еще одна проблема: вам нужно параметризовать массив, т.е. вместо просто значений, передать их как массив именованных SqlParameters. См:
SQlQuery и параметры