отправка параметров при вызове хранимой процедуры через SqlMapper.Запрос на C#

#c# #sql-server #asp.net-mvc #dapper

#c# #sql-сервер #asp.net-mvc #dapper

Вопрос:

У меня есть следующий вызов 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’, который не был указан.

Ответ №1:

Сам нашел ответ

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

Ответ №2:

В качестве альтернативы вы можете написать что-то вроде этого

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