Получение данных из БД из БД через Свойства навигации с выдачей исключения InvalidOperationException - PullRequest
2 голосов
/ 09 мая 2020

Я пытаюсь получить данные из 3 разных таблиц. Я хочу подсчитать общие покупки и продажи в каждом магазине. В настоящее время в моей таблице заказов есть 0 записей для некоторых магазинов. Я получаю эту ошибку. '

System.InvalidOperationException:' Обнуляемый объект должен иметь значение. '

`

 var stats = context.Stores.Select(s => new StoreStats()
        {
            //StoreID = s.store_id,
            //StoreName = s.StoreName + s.Ref_No,
            //RefNo = s.Ref_No,
            //MonthPurchasing = s.Purchasing != null ? s.Purchasing.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Sum(x => x.Amount) : 0,
            //MonthPurchasingCount = s.Purchasing != null ? s.Purchasing.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Count() : 0,
            //AverageMonthlyPurchasing = s.Purchasing != null ? s.Purchasing.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Count() / 30 : 0,
            //MonthSales = s.Order != null ? s.Order.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Sum(x => x.Amount) : 0,
            //MonthSalesCount = s.Purchasing != null ? s.Purchasing.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Count() : 0,
            //AverageMonthlySale = s.Order != null ? s.Order.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Count() / 30 : 0,
            //MonthlyProfit = (s.Purchasing != null ? s.Purchasing.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Sum(x => x.Amount) : 0) - (s.Order != null ? s.Order.Where(x => (x.Date - DateTime.Now).TotalDays <= 30).Sum(x => x.Amount) : 0),
            TotalPurchasing = s.Purchasing != null ? s.Purchasing.Sum(x => x.Amount) : 0,
            TotalSales = s.Order != null ? s.Order.Sum(x => x.Amount) : 0,
            TotalProfit = s.Purchasing != null ? s.Purchasing.Sum(x => x.Amount) - s.Order.Sum(x => x.Amount) : 0,
            //CompletedOrders = s.Order != null ? s.Order.Where(x => x.status == Model.Order.Status.Completed).Count() : 0,
            //PendingOrders = s.Order != null ? s.Order.Where(x => x.status == Model.Order.Status.Pending).Count() : 0,
            //TotalEmployees = s.Employees != null ? userManager.Users.Where(x => x.store_id != null && x.store_id == s.store_id).Count() : 0,
            //TotalBrands = s.Stock != null ? s.Stock.Where(x => x.store_id == s.store_id).Count() : 0,
        }).ToList();
        d.Stores = stats;

Изменить : после аппаратной отладки обнаружено, что строка без комментариев выдает это исключение

...