C #에서 SqlMapper.Query를 통해 저장 프로 시저를 호출 할 때 매개 변수를 보냅니다.

asp.net-mvc c# dapper sql-server

문제

나는 다음 SP 호출을 가지고있다.

        public IEnumerable<classfile> GetData(bool isactive)
        {
            using (SqlConnection cnn = this.OpenConnection())
            {

                 IList<classfile> SampleList = SqlMapper.Query<classfile>(cnn, "SPName").ToList();

                cnn.Close();

                return SampleList.ToList();
            }
        }

위의 dapper SP 호출과 함께 매개 변수를 보내려면 어떻게해야합니까?

나는 다음을 시도했다.

        public IEnumerable<classfile> GetData(bool isactive)
        {
            using (SqlConnection cnn = this.OpenConnection())
            {
                 var parameters = new DynamicParameters();
                 parameters.Add("@isActive", isactive);

                 IList<classfile> SampleList = SqlMapper.Query<classfile>(cnn, "SPName", parameters).ToList();

                cnn.Close();

                return SampleList.ToList();
            }
        }

하지만 다음과 같이 런타임 오류가 점점

프로 시저 또는 함수 'SPName'은 제공되지 않은 매개 변수 '@isActive'를 필요로합니다.

수락 된 답변

답을 직접 찾았습니다.

    public IEnumerable<classfile> GetData(bool isactive)
    {
        using (SqlConnection cnn = this.OpenConnection())
        {
             DynamicParameters parameters = new DynamicParameters();
             parameters.Add("@isActive", isactive);

             IList<classfile> SampleList = SqlMapper.Query<classfile>(cnn, "SPName", parameters, commandType: CommandType.StoredProcedure).ToList();

            cnn.Close();

            return SampleList.ToList();
        }
    }

인기 답변

또는 이와 같이 작성할 수 있습니다.

            IList<classfile> SampleList = SqlMapper.Query<classfile>(cnn, "SPName", new
            {
                isActive = isactive
            }
            , commandType: CommandType.StoredProcedure).ToList();


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