我有非通用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)
是微不足道的
是否有任何递归大师?