C# dotnet实体框架中的早期加载

C# dotnet实体框架中的早期加载,c#,.net,entity-framework,C#,.net,Entity Framework,我有3个模型课,如下所示- class Product { ... } class OrderDetails { ... public int ProductId { get; set; } [ForeignKey("ProductId")] public virtual Product Product { get; set; } public int OrderId { get;

我有3个模型课,如下所示-

    class Product
    {
      ...
    }

    class OrderDetails
    {
      ...
      public int ProductId { get; set; }
      [ForeignKey("ProductId")]
      public virtual Product Product { get; set; }

      public int OrderId { get; set; }
      [ForeignKey("OrderId")]
      public virtual Order Order { get; set; }
    }

    class Order
    {
      ...
      public virtual ICollection<OrderDetails> OrderDetailsList { get; set; }
    }
Order order = await _dbContext.Orders.Include(x => x.OrderDetailsList).FirstOrDefault(x => x.Id == orderId);
当我获取
订单时,我也想为
OrderDetailsList
中的每个数据提前加载
产品
,但我无法做到这一点。

这行吗

Order order = await _dbContext.Orders
          .Include(x => x.OrderDetailsList.Select(od=>od.Product))
          .FirstOrDefault(x => x.Id == orderId);
这行吗

Order order = await _dbContext.Orders
          .Include(x => x.OrderDetailsList.Select(od=>od.Product))
          .FirstOrDefault(x => x.Id == orderId);

这对我很管用,请试试

 _dbContext.Orders.Include(s => s.OrderDetailsList.Select(e => e.Product));

这对我很管用,请试试

 _dbContext.Orders.Include(s => s.OrderDetailsList.Select(e => e.Product));

thenclude
似乎是您在使用EF Core时想要的:对于EF 6,这个答案可能会有所帮助:我知道
Include
thenclude
的概念。我可以使用它执行以下操作-
Fetch Object1>Include Object2>Include Object3
,但是,我想为列表1中的每个产品实现以下操作-
Fetch Object1>Include List1>Include Object2
@AlphaDelta,我尝试了此操作,但它引发了以下异常-
Include属性lambda表达式“x=>{from OrderDetails y in x.OrderDetails列表选择[y].Product}无效。表达式应表示属性访问:“t=>t.MyProperty”。要将在派生类型上声明的导航作为目标,请指定目标类型的显式类型lambda参数,例如“(派生d)=>d.MyProperty'
@Raj请阅读文档如何使用ThenClude-知道这个概念是不够的,而且你的ThenClude表达式离文档很远如果你正在使用EF Core,那么ThenClude
似乎就是你想要的:对于EF 6,这个答案可能会有帮助:我知道
包含
包含
的概念。我可以使用它执行以下操作-
Fetch Object1>Include Object2>Include Object3
,但是,我想为列表1中的每个产品实现以下操作-
Fetch Object1>Include List1>Include Object2
@AlphaDelta,我尝试了此操作,但它引发了以下异常-
Include属性lambda表达式“x=>{from OrderDetails y in x.OrderDetails列表选择[y].Product}无效。表达式应表示属性访问:“t=>t.MyProperty”。要将在派生类型上声明的导航作为目标,请指定目标类型的显式类型lambda参数,例如,“(派生d)=>d.MyProperty”
@Raj请阅读文档如何使用Thenclude-知道这个概念是不够的,并且您的Thenclude表达式离文档很远