EF SqlQuery参数错误

本文关键字:错误 参数 SqlQuery EF | 更新日期: 2023-09-27 18:01:07

使用

string sql = @"
SELECT TOP 50 *
FROM Log 
ORDER BY Date desc";
return context.Database.SqlQuery<Log>(sql).ToList();

工作,但当我试图插入像这样的参数时

string sql = @"
SELECT TOP @top *
FROM Log 
ORDER BY @order";
List<object> parameters = new List<object>();
parameters.Add(new SqlParameter("top", top)); //top is int with value 50
parameters.Add(new SqlParameter("order", order)); //order is string with value Date desc
return context.Database.SqlQuery<Log>(sql, parameters.ToArray()).ToList();

我得到

"附加信息:'@top'附近的语法不正确。".

我错在哪里了?

EF SqlQuery参数错误

将查询重新排列为以下

string sql = @"
SELECT TOP (@top) *
FROM Log 
ORDER BY @order";

编辑

string sql = @"
SELECT TOP @top *
FROM Log 
ORDER BY ";
sql += order;
List<object> parameters = new List<object>();
parameters.Add(new SqlParameter("top", top)); //top is int with value 50
return context.Database.SqlQuery<Log>(sql, parameters.ToArray()).ToList();