【发布时间】:2017-06-06 20:30:51
【问题描述】:
您好,我有一个多对多关系,如下所示。
public class order
{
public int id { get; set; }
public virtual ICollection<OrderProducts> Products { get; set; }
}
public class product
{
public int id { get; set; }
public virtual ICollection<OrderProducts> Orders { get; set; }
}
public class OrderProducts
{
public int OrderId { get; set; }
public virtual Order Order{ get; set; }
public int ProductIdId { get; set; }
public virtual Product Product { get; set; }
}
我想将所有产品包含(急切加载)到他们的订单中,但是当使用与客户显示的相同方法时,我的产品列表会填充 OrderProducts-objects 而不是 Product-objects
public IEnumerable<Order> GetAll()
{
return dataContext.Orders
.Include(order => order.Customer)
// now include all products aswell..
}
我试过没有运气之类的东西
.Include(order => order.Products.Where(op => op.OrderId == order.Id).Select(p => p.Product))
如果有人可以在这里帮助我,我将不胜感激.. 也非常欢迎您分享有关如何构建更高级 lambda 的任何好的资源,因为我对此还不是很熟悉..
【问题讨论】:
-
为什么你的
OrderProducts班级只有一个Product?不是数组或列表 -
@S.Serp
OrderProducts是一个多对多关系表,因此它将单个订单链接到单个产品 -
只是为了澄清 - 罗宾一直都是对的。阅读此github.com/aspnet/EntityFramework/issues/6166 并进行一些调试后,对象一直都在那里。我只需要重新排列我的 [JsonIgnore] 属性。
标签: c# entity-framework lambda asp.net-core