使用GetAllIninclude可以在单个调用中获得多个级别

时间:2018-11-15 02:01:59

标签: entity-framework automapper

使用ABP存储库模式,我们试图创建一个查询来检索一组实体以及它们的子代和子代子代

实体X->一对多的实体Y->一对多的实体Z

(例如,以Invoice> InvoiceItem> InvoiceItemParts为例)

Abp存储库模式可使用

检索至少一组子级

结果= _repositoryInvoice.GetAllIn included(x => x.InvoiceItem)

有没有一种方法可以使用LINQ在此1个查询中包括InvoiceItemParts?如果没有,建议使用一次调用来检索所有子导航属性和所有级别的推荐方法。

主要目标是做到这一点,因此在访问子属性以及这些子级的子级属性时,我们不必多次往返数据库。

谢谢 杰森

2 个答案:

答案 0 :(得分:0)

决定只创建我自己的自定义存储库,并直接使用EFCore .Include和.ThenInclude。事实证明,AspNetBoilerPlate除了查询要查询的根实体的直接子级外,不支持查询导航属性。

Microsoft提供了一些使用.Include和.ThenInclude的出色示例:

https://docs.microsoft.com/en-us/ef/core/querying/related-data

祝你好运!

答案 1 :(得分:0)

IRepository<>IncludeThenInclude 方法,您可以在其中使用与 EF Core 标准相同的结构。

_repository.GetAll().Include(d => d.Child).ThenInclude(c => c.GrandChild).FirstOrDefault(x => x.Id.Equals(id));