enviar parámetros cuando se llama a un procedimiento almacenado a través de SqlMapper.Query en C #

asp.net-mvc c# dapper sql-server

Pregunta

Tengo la siguiente llamada de 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();
            }
        }

¿Cómo puedo enviar los parámetros junto con la llamada SP de dapper?

Intenté seguir

        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();
            }
        }

pero su tiempo de ejecución obtiene un error como el siguiente

El procedimiento o función 'SPName' espera el parámetro '@isActive', que no se suministró.

Respuesta aceptada

Encontré la respuesta yo mismo

    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();
        }
    }

Respuesta popular

Alternativamente, puedes escribir algo como esto

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué