Dapper使用ODBC存储过程 输入参数总是提示@XXX was not supplied
Dapper using ODBC store procedure Input parm always promt @XXX was not supplied
我需要All Dapper大师的帮助
我从一个月前开始学习使用Dapper,但是在使用ODBC SP 执行查询时出现错误。
代码最初是某人(DapperExample)编写的,但没有使用ODBC,感谢作者我忘记了你的名字。
我的SP:
创建过程SP_GET_FIND_EMPLOYEES (@EmpID INT)
作为
开始
设置无计数;
SELECT * 来自 tblEmployee,其中 EmpID = @EmpID
结束
去
我的代码
public class 员工仪表板:IEmployeeDashBoard
{
private IDbConnection _db;
string connStr2 = WebConfigurationManager.ConnectionStrings["DapperExample"].ConnectionString;
public EmployeeDashBoard()
{
}
public Employee Find(int id)
{
//type b, by sp
using (IDbConnection connection = new OdbcConnection(connStr2))
{
var p = new DynamicParameters();
p.Add("@EmpID", id);
Employee result = this._db.Query<Employee>("dbo.SP_GET_FIND_EMPLOYEES", new { @EmpID = id }, commandType: CommandType.StoredProcedure).Single();
return result;
}
}
}
错误:
错误 [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server] 过程或函数 'SP_GET_FIND_EMPLOYEES' 需要未提供的参数“@EmpID” .
提前致谢。
施玛莎
我自己解决了,我正在使用 Sybase ODBC SP,(God Job Sam),现在我可以在功能中避免 entity framework。
技巧在这里:
Solved: SP_GET_FIND_EMPLOYEES ?
using (IDbConnection connection = new OdbcConnection(connStr2))
{
var p = new DynamicParameters();
p.Add("?EmpID?", id.ToString());
Employee result = this._db.Query<Employee>("dbo.SP_GET_FIND_EMPLOYEES ?", p, commandType: CommandType.StoredProcedure).Single();
return result;
}
您对 ODBC 命名参数的实现不正确。您在语句中用问号包围命名参数,并创建不带问号的命名参数。 Dapper 使用问号来解析语句以查找名称。
p.Add("EmpID", id.ToString());
Employee result = this._db.Query<Employee>("dbo.SP_GET_FIND_EMPLOYEES ?EmpID?", p, commandType: CommandType.StoredProcedure).Single();
有关详细信息,请参阅此答案:
我需要All Dapper大师的帮助
我从一个月前开始学习使用Dapper,但是在使用ODBC SP 执行查询时出现错误。
代码最初是某人(DapperExample)编写的,但没有使用ODBC,感谢作者我忘记了你的名字。
我的SP:
创建过程SP_GET_FIND_EMPLOYEES (@EmpID INT) 作为 开始 设置无计数; SELECT * 来自 tblEmployee,其中 EmpID = @EmpID
结束 去
我的代码
public class 员工仪表板:IEmployeeDashBoard {
private IDbConnection _db;
string connStr2 = WebConfigurationManager.ConnectionStrings["DapperExample"].ConnectionString;
public EmployeeDashBoard()
{
}
public Employee Find(int id)
{
//type b, by sp
using (IDbConnection connection = new OdbcConnection(connStr2))
{
var p = new DynamicParameters();
p.Add("@EmpID", id);
Employee result = this._db.Query<Employee>("dbo.SP_GET_FIND_EMPLOYEES", new { @EmpID = id }, commandType: CommandType.StoredProcedure).Single();
return result;
}
}
}
错误:
错误 [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server] 过程或函数 'SP_GET_FIND_EMPLOYEES' 需要未提供的参数“@EmpID” .
提前致谢。
施玛莎
我自己解决了,我正在使用 Sybase ODBC SP,(God Job Sam),现在我可以在功能中避免 entity framework。 技巧在这里:
Solved: SP_GET_FIND_EMPLOYEES ?
using (IDbConnection connection = new OdbcConnection(connStr2))
{
var p = new DynamicParameters();
p.Add("?EmpID?", id.ToString());
Employee result = this._db.Query<Employee>("dbo.SP_GET_FIND_EMPLOYEES ?", p, commandType: CommandType.StoredProcedure).Single();
return result;
}
您对 ODBC 命名参数的实现不正确。您在语句中用问号包围命名参数,并创建不带问号的命名参数。 Dapper 使用问号来解析语句以查找名称。
p.Add("EmpID", id.ToString());
Employee result = this._db.Query<Employee>("dbo.SP_GET_FIND_EMPLOYEES ?EmpID?", p, commandType: CommandType.StoredProcedure).Single();
有关详细信息,请参阅此答案: