如何指定强类型导航属性includes

本文关键字:属性 includes 导航 强类型 何指定 | 更新日期: 2023-09-27 18:29:20

我正在编写一个EF存储库,我的一个函数允许您通过谓词查找特定对象,同时指定include

IQueryable<T> FindBy(Expression<Func<T, bool>> predicate, 
                     params Expression<Func<T, object>>[] includes)

这很好,但是我想指定的一个包含是导航属性的导航属性。

我的调用当前看起来是这样的,如果指定为字符串,它将是"Folders.Devices"

var folder = _Folders.FindBy(f => f.FolderId == id, f => f.Devices).FirstOrDefault();

如果我通过字符串指定这个额外的导航属性,它将是

"Folders.Devices.Nodes"

我的问题是如何在代码中包含Devices中每个DeviceNodes属性?

如何指定强类型导航属性includes

var folder = _Folders.FindBy(f => f.FolderId == id, f => f.Devices.SelectMany(x=>x.Nodes)).FirstOrDefault();