у меня 3 таблицы. Заказ, Линии Заказа и Магазины. В таблице Order есть StoreId, который является внешним ключом из таблицы Stores, а в таблице Orderlines есть внешний идентификатор из таблицы Order. Мне нужно только получить поля Order.OrderId, Order.WarehouseOrderId, Store.StoreName и количество Orderlines на Order. Так что в настоящее время это моя реализация:
public List<Order> GetOrdersDashboardWithoutStatus1(SearchDashboardCriteria cri)
{
using (var ctx = CreateDbContext())
{
var orders = (from items in ctx.Orders select items);
if (cri.MerchantId != 0)
{
orders = orders.Where(x => x.Store.MerchantId == cri.MerchantId);
}
return orders.Where(x => (DbFunctions.TruncateTime(x.DateImported) >= DbFunctions.TruncateTime(cri.StartDate))
&& (DbFunctions.TruncateTime(x.DateImported) <= DbFunctions.TruncateTime(cri.EndDate)))
.Include(x => x.Store).Include(x => x.OrderLines).ToList();
}
}
В настоящее время реализация работает, но производительность очень низкая, и иногда возникает ошибка тайм-аута, поскольку записи могут иметь более 30 тыс. Заказов.