Предположим, у меня есть эти упрощенные EF-объекты ...
public class PurchaseOrder
{
public int POID {get;set;}
public int OrderID {get;set;}
public int VendorID {get;set;}
public IEnumerable<Order> Orders {get;set;}
}
public class Order
{
public int OrderID {get;set;}
public decimal Price {get;set;}
public IEnumerable<Item> Items {get;set;}
}
public class Item
{
public int OrderID {get; set;}
public string SKU {get;set;}
public int VendorID {get;set;}
public Order Order {get;set;}
}
Бизнес-логика:
В заказе может быть несколько заказов на поставкупо одному для каждого отдельного поставщика в заказе (поставщики определяются на уровне позиции).
Как можно выборочно включать дочерние объекты?
При запросах на PO,Я хочу автоматически включать дочерние объекты для Order и Item.
Я выполняю это, используя Include () ...
Context.PurchaseOrders.Include("Orders.Items");
Это выполняет свою работу и откатывает связанные объекты, но, Я только хочу включить сущности Item, VendorID которых соответствует VendorID сущности PurchaseOrder .
В традиционном SQL я просто включил бы это в условие JOIN,но EF создает их внутренне.
Какую магию LINQ я могу использовать, чтобы сказать EF применить условие, не создавая вручную СОЕДИНЕНИЯ между сущностями?