Процедура, не возвращающая значения в таблицу данных с использованием Entity Framework - PullRequest
1 голос
/ 13 июня 2019

Я хочу использовать следующую хранимую процедуру, которая содержит сводный запрос

ALTER PROCEDURE YarnStockList
AS
BEGIN
    SELECT 
        YarnId,
        Receive,
        Issued,
        Claim,
        Total = Receive - Issued - Claim
    FROM
        (SELECT 
             YarnId, Status, Bags
         FROM 
             Yarn_IssueReceive) AS PivotData
    PIVOT
        (SUM(bags) FOR Status IN (Receive, Issued, Damage, Claim)
    END) AS Pivoting

Вывод процедуры в sql Мой класс

public class Yarn_IssueRecieve
{
     public int Bags { get; set; }

    [MaxLength(20)]
    public string Status { get; set; }

    public int YarnId { get; set; }
}

Использование следующего кода возвращает пустой результат:

using (var db = new ATMSEntityModel())
{
    var que = db.Database.SqlQuery<Yarn_IssueRecieve>("EXEC YarnStockList").ToList();

    gridControl1.DataSource = que.ToList();
}

Как я могу выполнить это в Entity Framework для передачи таблицы данных с такими же столбцами в моей процедуре?

1 Ответ

4 голосов
/ 13 июня 2019

Добавление свойства в класс Yarn_IssueRecieve согласно списку выбора SP или создайте новую модель вида, как показано ниже

public class Yarn_IssueRecieveViewModel
{
        public int YarnId { get; set; }
        // decimal/float/int as it is returned by the SP. 
        public decimal Receive { get; set; }
        public decimal Issued { get; set; }
        public decimal Claim { get; set; }
        public decimal Total { get; set; }
}

Затем измените тип возвращаемого значения Yarn_IssueRecieve на Yarn_IssueRecieveViewModel

var que = db.Database.SqlQuery<Yarn_IssueRecieveViewModel>("EXEC YarnStockList").ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...