Как отобразить результат из хранимой процедуры в класс модели без выбора столбца в нем? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть класс продаж, который имеет 5 свойств. Но я получаю результат из хранимой процедуры через платформу Entity, которая выбирает только 2 столбца из таблицы. Когда я выполняю код, я получаю сообщение об ошибке: «Средство чтения данных несовместимо с указанным« FreshCatchManagement.Sales ». Элемент типа «Id» не имеет соответствующего столбца в считывателе данных с тем же именем. '

Попытка изменить хранимую процедуру для извлечения всех столбцов, упомянутых в классе, но не смогласделайте это так, как я использовал предложение Group By.

Модель продаж Класс:

[Table("dbo.sales")]
public class Sales
{
    [Key]
    public int Id { get; set; }

    public DateTime Date { get; set; }

    public int ProductId { get; set; }

    public int companySiteId { get; set; }

    public double TotalSales { get; set; }
}

Хранимая процедура:

GO

IF EXISTS (
        SELECT *
        FROM sys.objects
        WHERE name = 'dbo.GetSalesDetails'
        )
BEGIN
    DROP PROCEDURE dbo.GetSalesDetails
END
GO

ALTER PROCEDURE dbo.GetSalesDetails
AS
BEGIN
    SELECT CompaySite.SiteName AS SiteName
        ,SUM(Sales.TotalSales) AS TotalSales
    FROM dbo.Sales Sales WITH (NOLOCK)
    INNER JOIN dbo.CompanySites CompaySite ON Sales.CompanySiteId = CompaySite.Id
    INNER JOIN dbo.Products Products ON Sales.ProductId = Products.Id
    GROUP BY CompaySite.SiteName
END
GO

Код сзади:

public ActionResult GetSalesDetails()
{
    using(var salesData  = new ContextBuilder())
    {
        List<Sales> totalSalesByCompanySites = salesData.Database.SqlQuery<Sales>("GetSalesDetails").ToList();
        return PartialView("_SalesDetailsByBranch", totalSalesByCompanySites);
    }
}

Ошибка:

System.Data.Entity.Core.EntityCommandExecutionException: «Средство чтения данных несовместимо с указанным« FreshCatchManagement.Sales ». Элемент типа «Id» не имеет соответствующего столбца в считывателе данных с тем же именем. '

...