我不知道我在这里不明白什么,但是导航属性没有使用Inlucde方法加载。
public IEnumerable<T> GetAll<T>() where T : class
{
List<string> navigationProperties =
GetNavigationProperties<T>();
var query = _context.Set<T>().AsQueryable();
foreach (var navigationProperty in navigationProperties)
{
query.Include(navigationProperty);
}
return query.ToList();
}
private static List<string> GetNavigationProperties<T>() where T : class
{
return typeof(T).GetProperties()
.Where(x => x.GetCustomAttributesData()
.Any(p => p.AttributeType == typeof(NavigationPropertyAttribute)))
.Select(n => n.Name).ToList();
}
NavigationPropertyAttribute是一个自定义属性, 如我在调试期间所见,GetNavigationProperties()方法返回指定类型的所有导航属性的列表。
答案 0 :(得分:7)
您必须分配返回值-Include()
的类型不是void
query = query.Include(navigationProperty);