繁体   English   中英

我如何获得一个实体及其所有相关实体

[英]How do I get an entity and all of its related entities

我正在使用EF6,并且正在尝试获取实体列表。 对于列表中的每个实体,我希望它在一次调用中填写子实体。

例如:

Order.Id
Order.ColletionOfItems

Item.Id
Item.OrderId
Item.ProductName
Item.CollectionOfOptions

Option.Name
Option.Value

using(var db = DbContext)
{   //I want to fill in everything during this call as I am using all of it in the
    //The calling function.
    OrderList = db.Orders.Select().include //This is where I am stuck
    return OrderList;
}

我希望返回的集合具有所有订单,与单个订单关联的所有项目以及与单个项目关联的所有选项。

我该如何构建linq语句来做到这一点? 有没有比.Include("MyMajicString")更好的方法? 我的搜索导致几乎没有可接受的答复,我应该实际搜索什么?

您需要使用Include扩展方法:

using(var db = new YourContext())
{   
    var OrderList = db.Orders.Include(o=>o.ColletionOfItems.Select(i=>i.CollectionOfOptions));
    return OrderList;
}

您还可以使用DbQuery.Include方法,该方法接收导航的路径作为参数。 要作为string加载的属性:

using(var db = new YourContext())
{   
    var OrderList = db.Orders.Include("ColletionOfItems.CollectionOfOptions");
    return OrderList;
}

但是最好使用第一个,因为它是强类型的。 使用第二种方法,您可能会在键入属性之一的名称时出错,或者可以更改导航的名称。 将来在模型中添加属性,而忘记在路径中重命名该属性。

另一件事,请小心加载大量数据。 使用该查询,您将加载所有订单和相关属性,因此,在将所需信息加载到应用程序之前,请尝试先进行过滤(在Include调用之后调用Where方法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM