多个嵌套导航属性EF?

时间:2014-05-05 09:48:47

标签: entity-framework

我的数据库中用户包含订阅列表,每个订阅都有类别,每个类别都包含列表路径,每条路径都包含文章

的列表

模型

class User {
  ICollection<Subscription> Subscriptions;
}
class Subscription {
   Category category;
}
class Category {
   ICollection<Path> paths;
}
class Path{
   ICollection<Article> Articles;
}

我的问题

如何检索特定用户的所有文章?

1 个答案:

答案 0 :(得分:0)

使用SelectSelectMany语句的组合,您可以遍历您的实体并找到所需的集合:

var allUserArticles = myUser.Subscriptions
    .Select(sub => sub.Category) //take the category from each subscription
    .SelectMany(cat => cat.Paths) //Take each path from each category, put them in a single list
    .SelectMany(path => path.Articles) //Take each article from each path, put them in a single list
    .ToList();

请注意,如果需要从数据库加载这些实体,那么EF需要实现预先加载,或者您必须确保在运行上述语句之前检索所有需要的相关实体。意外的空值可能导致输出不正确。

但是,我没有相关信息,因为问题中缺少这些信息,所以我不知道你的具体情况。