该方法采用一个字符串作为查询,一个数组Object []
作为参数,大概是为了避免 SQL 注入。
然而,地球上没有任何地方记录了您应该放入对象数组的内容。
关于 SO 的另一个问题提出了完全相同的问题,但接受的答案不起作用:使用 DbSet<T>.SqlQuery() 时,如何使用命名参数?
我已经尝试了我能想到的所有形式的参数替换,它们都抛出异常。有任何想法吗?
会不会像这样简单:
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".