Я использую Ef Core version 1.1.2
, у меня есть такой метод:
var query = _context.OrderItems
.Include(ff => ff.ProductPackageOrderItem).ThenInclude(ff => ff.ProductPackage)
.ThenInclude(ff => ff.Product)
.Include(ff => ff.ChildrenOrderItems)
.Include(ff => ff.ServiceOrderItem)
.ThenInclude(ff => ff.CustomerService).ThenInclude(ff => ff.Package)
.Include(ff => ff.InvoiceItems)
.ThenInclude(ff => ff.InvoiceItem)
.ThenInclude(ff => ff.InvoiceItemDiscountLogs)
.Include(ff => ff.InvoiceItems)
.ThenInclude(ff => ff.InvoiceItem)
.ThenInclude(ff => ff.InvoiceItemTaxLogs)
.Where(dd =>
dd.OrderId == orderId);
return query.ToList();
из-за ошибки, я думаю, что в этой версии, которую я использую, я выбрасываю исключение, теперь я хочу изменить его на запрос Linq, для этого у меня есть это, но у него есть некоторые проблемы
var result = (from oi in DataContext.OrderItems.Include(o => o.ChildrenOrderItems)
.Include(ff => ff.InvoiceItems).ThenInclude(ff => ff.InvoiceItem).ThenInclude(ff => ff.InvoiceItemDiscountLogs)
join soi in DataContext.ServiceOrderItems.Include(ff => ff.CustomerService).ThenInclude(ff => ff.Package).ThenInclude(ff => ff.Product) on oi.Id equals soi.OrderItemId
join ii in DataContext.OrderItemInvoiceItems.Include(ff => ff.InvoiceItem).ThenInclude(ff => ff.InvoiceItemDiscountLogs) on oi.Id equals ii.OrderItemId
join oiii in DataContext.OrderItemInvoiceItems.Include(ff => ff.InvoiceItem).ThenInclude(ff => ff.InvoiceItemTaxLogs) on oi.Id equals oiii.OrderItemId
join ppoi in DataContext.ProductPackageOrderItems.DefaultIfEmpty().Include(ff => ff.ProductPackage).ThenInclude(ff => ff.Product) on oi.Id equals ppoi.OrderItemId
where oi.OrderId == orderId && oi.Type == OrderItemType.CustomerService && !oi.IsDeleted
&& !oi.ServiceOrderItem.IsDeleted
&& !oi.ServiceOrderItem.CustomerService.IsDeleted
&& oi.ServiceOrderItem.CustomerService.Id == customerServiceId
select oi).ToList();
return result;
1. Он ничего не возвращает, потому что некоторые записи не имеют ProductPackageOrderItems
.
2. InvoiceItemTaxLogs
и InvoiceItemDiscountLogs
равны нулю, хотя у них есть данные в базе данных.