如何将关联表添加到非关联表?

时间:2019-11-26 15:04:53

标签: c# sql asp.net database entity-framework

我有OrderProductCartLine。这是一个结构:

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)”方法只能与“。”一起使用。导航属性名称的分隔列表。

1 个答案:

答案 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");
相关问题