Nib*_*Pig 10 c# sql entity-framework
该方法为查询提供了一个字符串,并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));
Run Code Online (Sandbox Code Playgroud)
这给了 Must declare the table variable "@p0".
var result = context.Users.SqlQuery<T>("SELECT * FROM {0} WHERE {1} = '{2}'", tableName, propertyName, searchQuery);
Run Code Online (Sandbox Code Playgroud)
这给了 Must declare the table variable "@p0".
nem*_*esv 18
查询语法没有任何问题,或者您如何创建和传递SqlParameter对象.
您的问题是您尝试使用变量作为表名,不能做什么(请参阅:必须声明表变量@table),因此您需要在查询中手动"模板化"表名:
就像是.
var result = context.Users.SqlQuery<T>(
"SELECT * FROM " + tableName + " WHERE @p0 = '@p1'",
new SqlParameter("p0", propertyName),
new SqlParameter("p1", searchQuery));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18465 次 |
| 最近记录: |