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