У меня есть класс продаж, который имеет 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» не имеет соответствующего столбца в считывателе данных с тем же именем. '