ODBC 저장 프로 시저를 사용하는 Dapper 입력 매개 변수 always promt @XXX가 제공되지 않았습니다.

dapper odbc

문제

All Dapper 마스터의 도움이 필요합니다.

한 달 전부터 Dapper를 사용하여 학습했지만 ODBC SP를 사용하여 쿼리를 실행할 때 오류가 있습니다.

이 코드는 원래 누군가 (DapperExample)에 의해 작성되었지만 ODBC를 사용하지 않았습니다. 필자는 귀하의 이름을 잊어 버렸습니다.

내 SP :

CREATE PROCEDURE SP_GET_FIND_EMPLOYEES (@EmpID INT) BEGIN SET NOCOUNT ON; SELECT *에서 tblEmployee 어디서 EmpID = @EmpID

끝내기


내 코드

공용 클래스 EmployeeDashBoard : 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)을 사용하고 있습니다. 이제이 기능에서 엔티티 프레임 워크를 피할 수 있습니다. 여기에 속임수 :

해결 : 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();

자세한 내용은이 답변을 참조하십시오. https://stackoverflow.com/a/26484944/6490042



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow