IQueryable <t>无法获取导航属性

时间:2018-06-21 11:44:34

标签: c# entity-framework

我不知道我在这里不明白什么,但是导航属性没有使用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()方法返回指定类型的所有导航属性的列表。

1 个答案:

答案 0 :(得分:7)

您必须分配返回值-Include()的类型不是void

query = query.Include(navigationProperty);