我有Order
,Product
和CartLine
。这是一个结构:
Order.cs
public IQueryable<CartLine> Lines { get; set; }
CartLine.cs
public class CartLine {
public int CartLineID { get; set; }
public Product Product { get; set; }
public int Quantity { get; set; }
}
Product.cs
public string Name { get; set; }
public string Description { get; set; }
这样一个问题,我该如何从数据库中获取CartLine中的产品。需要使用卡特琳有关产品的信息。
我以某种方式Orders.Include("Product")
这样做,但是Orders没有此属性,所以我遇到了异常。我该怎么做,或者我需要重写结构?
UPD获取异常:
属性“产品”不是实体类型“订单”的导航属性。 “ include(string)”方法只能与“。”一起使用。导航属性名称的分隔列表。
答案 0 :(得分:2)
在可能的情况下,最好使用强类型的Include
方法。
如果您使用标准EF:
Orders.Include(o => o.Lines.Select(l => l.Product));
使用EF Core:
Orders.Include(o => o.Lines).ThenInclude(l => l.Product);
您的问题是“产品”不是Order
的属性,而是CartLine
的属性,使用强类型方法会更加明显。
如果您确实需要使用Include(string)
,可以这样做:
Orders.Include("Lines.Product");