0
我有我的数据库用户有订阅的列表,每个订阅具有类别,每个类别都有路径的列表,每个路径具有的文章列表?多重嵌套导航属性EF?
型号
class User {
ICollection<Subscription> Subscriptions;
}
class Subscription {
Category category;
}
class Category {
ICollection<Path> paths;
}
class Path{
ICollection<Article> Articles;
}
我的问题
没有即时通讯不执行急切加载,我必须使用包括之前,这些选择? db.Users.Include(“Subscriptions.Category.Paths.Articles”)。First()。订阅 .Select(sub => sub.Category) .SelectMany(cat => cat.Paths) .SelectMany(path = > path.Articles) .ToList(); 另一个问题是,这些选择在SQL服务器中运行,还是在内存中运行结果后运行? –
是的。它不会像一条线那样完成,但我认为你已经把它作为一个简单的例子。一般来说,你会想使用Include来确保一切都被加载,然后使用上面的Select语句。 – Flater
额外注意:不要担心为此使用多行,如果您要连接到数据库,只有当您实际想要访问实例时才会运行查询。在这种情况下,这意味着LINQ将在'ToList()'调用中运行已编译的查询,而不是在它之前。通常,查询将在您第一次尝试获取某个Article对象时运行。 – Flater