C# dotnet实体框架中的早期加载
我有3个模型课,如下所示-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;
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表达式离文档很远