在Entity Framework的DbQuery中包含实现接口类型的所有导航属性

时间:2015-02-19 14:09:05

标签: algorithm entity-framework recursion reflection entity-framework-6

我有非通用DbQuery,为了优化查询,我希望包含实现特定类型的类型的所有导航属性。 对于整个对象图,不仅仅是第一级。

对于第一级,我可以提出我的扩展方法:

public static DbQuery IncludeImplementors(this DbQuery dbq, Type typeToImplement)
{
    var includedPropNames = dbq.ElementType
        .GetProperties()
        .Where(pi => pi.IsNavigationProperty() && typeToImplement.IsAssignableFrom(pi.PropertyType))
        .Select(pi => pi.Name);

    return includedPropNames.Aggregate(dbq, (current, propName) => current.Include(propName));
}

我认为,实现扩展方法bool IsNavigationProperty(this PropertyInfo pi)是微不足道的

是否有任何递归大师?

0 个答案:

没有答案