【发布时间】:2014-10-20 13:08:26
【问题描述】:
我正在使用这个通用方法:
protected IEnumerable<T> ExecuteSprocQuery<T>(string sproc, object objectParams)
{
using (var conn = OpenConnection())
{
var list = conn.Query<T>(sproc, null, commandType: CommandType.StoredProcedure);
return list;
}
}
像这样调用存储过程:
ExecuteSprocQuery<SomePoco>("SomeSproc", new { P1 = p1, P2 = p2 }).ToList().FirstOrDefault();
我正在尝试为参数化的 sql 查询实现类似的东西:
protected IEnumerable<T> ExecuteQuery<T>(string sqlString, object objectParams)
{
using (var conn = OpenConnection())
{
var list = conn.Query<T>(sqlString, null, commandType: CommandType.Text);
return list;
}
}
但是这样的事情会引发错误:
ExecuteQuery<int?>("Select id from [dbo].[TableName] where [X] = @x ", new { @x = 1}).FirstOrDefault();
有什么想法吗?
PS:
错误是:
Additional information: Must declare the scalar variable "@x".
【问题讨论】:
-
尝试用
x替换@x -
您没有将
objectParams传递给Query调用。是错字吗?