Csharp/C#教程:渴望加载多对多 – EF Core分享


渴望加载多对多 – EF Core

您好我有很多关系设置如下。

public class order { public int id { get; set; } public virtual ICollection Products { get; set; } } public class product { public int id { get; set; } public virtual ICollection 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 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)) 

如果有人可以帮助我,我将非常感激。你也非常欢迎分享任何关于如何构建更高级的lambdas的好资源,因为我对此并不熟悉。

只需使用ThenInclude()语句:

 public class order { public int id { get; set; } public virtual IList OrderProducts { get; set; } } //... public IEnumerable GetAll() { return dataContext.Orders .Include(order => order.OrderProducts) .ThenInclude(orderProducts => orderProducts.Product); } 

如此处所述,尚未实现多对多关系。 您必须加载OrderProducts然后Select(orderProducts => orderProducts.Product)

重要提示: IntelliSense完成可能会告诉您无法执行此操作,但您可以,只需进行真正的构建即可

只是为了Clerify – Robin一直都是正确的…在阅读了这个https://github.com/aspnet/EntityFramework/issues/6166并做了一些调试后,对象就一直存在……我只需要重新安排我的[JsonIgnore] abit属性。

上述就是C#学习教程:渴望加载多对多 – EF Core分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/983889.html

(0)
上一篇 2021年12月19日
下一篇 2021年12月19日

精彩推荐