Как выполнить хранимую процедуру в веб-API и вернуть список

Я учусь разрабатывать службы веб-API в .NET Core Web API. Теперь я пытаюсь выполнить хранимую процедуру и вернуть список. Но мой код не отображает данные после выполнения хранимой процедуры. Любая помощь горячо приветствуется.

БЛ

public string VantageEntities { get; private set; }
public List<SalesAndReturns_RPT> GetOrders(string Year, VantageContext _context)
{
    string conn = _context.Database.GetDbConnection().ConnectionString;
    using (SqlConnection sql = new SqlConnection(conn))
    {
        sql.Open();
        using (SqlCommand cmd = new SqlCommand("AllSellout", sql))
        {
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@Year", Year));
            List<SalesAndReturns_RPT> response = null;

            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    //response = Convert.ToDecimal(reader.GetDecimal(0));
                }
            }
            sql.Close();
            return response;
        }
    }
}

контроллер

    namespace Vantage.Core.Direct.API.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class PieChartController : ControllerBase
        {
            private readonly VantageContext _context;
            public PieChartController(VantageContext context)
            {
                _context = context;
            }
            [HttpGet]
            public IEnumerable<DAL.Models.SalesAndReturns_RPT> GetOrders(string Year)
            {
                var list = new PieChartMgt().GetOrders(Year, _context);
                return list;
            }
}
}

Моя хранимая процедура

ALTER PROCEDURE AllSellout
@Year VARCHAR(6) 
AS
BEGIN
SELECT DISTINCT BusinessArea, sum(NetValue) as sumNetValue
FROM SalesAndReturns_RPT
WHERE  year(Call_ActualStartDate) = @Year
GROUP BY BusinessArea 
ORDER BY sumNetValue DESC
END

SalesAndReturns_RPT.cs

    public partial class SalesAndReturns_RPT
    {
        public int UID { get; set; }
        public string Distributor { get; set; }
        public string Id { get; set; }
        public string DistributorID { get; set; }
        public string Outlet { get; set; }
        public string OutletID { get; set; }
        public string SalesOrgName { get; set; }
        public decimal? NetValue { get; set; }
        public string BusinessArea { get; set; }
}

Вам нужно показать класс SalesAndReturns_RPT и скрипт хранимой процедуры sql

Serge 22.03.2022 16:32

я отредактировал свой вопрос

Pra 22.03.2022 17:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй это

 var response = new  List<SalesAndReturns_RPT>();

   using (var reader = cmd.ExecuteReader())
    {
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    var sales= new SalesAndReturns_RPT();
                     sales.BusinessArea = Convert.ToDecimal(reader.GetString(0));
                    sales.NetValue  = Convert.ToDecimal(reader.GetDecimal(1));
                
                 response.Add(sales);
                  
                 }
                
            }
     }
     return response;

Произошла ошибка: новое выражение требует списка аргументов или (), [] или {} после типа

Pra 22.03.2022 18:43

@prarthanawickramasinghe Это была опечатка, вам нужен новый SalesAndReturns_RPT();. Извините, но вам слишком рано начинать создавать код приложения, если вы не знаете, как создать экземпляр. Возможно, вам придется изучить C# немного дольше.

Serge 22.03.2022 21:27

Другие вопросы по теме