Метод берет строку для запроса и массив Object []
для параметров, по-видимому, чтобы избежать внедрения SQL.
Однако нигде на самом деле он не задокументировал, что вы должны поместить в массив объектов.
Есть еще один вопрос о SO, который запрашивает это одно и то же, но принятый ответ не работает: При использовании DbSet <T> .SqlQuery(), как использовать named параметры?
Я пробовал все формы замены параметров, о которых я могу думать, и все они бросают исключение. Любые идеи?
Было бы так просто:
SqlQuery("SELECT * FROM @table", "Users")
Изменить: Вот некоторые вещи, которые я пробовал (исключение - SqlException
):
var result = context.Users.SqlQuery<T>("SELECT * FROM @p0 WHERE @p1 = '@p2'",
new SqlParameter("p0", tableName),
new SqlParameter("p1", propertyName),
new SqlParameter("p2", searchQuery));
Это дает Must declare the table variable "@p0".
var result = context.Users.SqlQuery<T>("SELECT * FROM {0} WHERE {1} = '{2}'", tableName, propertyName, searchQuery);
Это дает Must declare the table variable "@p0".