2009-11-02 52 views
3

我不確定這個問題是否已經得到解答,但我看了幾個問題,但我不認爲他們完全符合我的要求。實體框架 - 包含在子查詢中?

比方說,我有3個表:

Restaurant 1.....M MenuCategory 1.....M MenuItem 

我有一個L2E查詢看起來是這樣的:

Restaurant = context.Restaurant 
    .Include(r => r.MenuCategory) 
    .FirstOrDefault(r => r.RestaurantId == resaurantId); 

其中一期工程在一定程度上,但只預加載菜單類別。

作爲一種解決方法,我可以遍歷每個類別並在它們上調用.Load(),但這會涉及到更多理論上我應該需要的操作。

我真的希望能夠做的是一樣的東西:

方面:

Restaurant = context.Restaurant 
    .Include(r => r.MenuCategory) 
    .Include(r => r.MenuCategory.MenuItems) 
    .FirstOrDefault(r => r.RestaurantId == resaurantId); 

但顯然作爲r.MenuCategory是一個枚舉

答案1,這是不可用.Restaurant.Include( 「MenuCategory.MenuItems」);

  • 這可行,但它不是強類型。我不知道是否有人能想出是強類型的(因爲這已經回答了我可能這個移動到另一個問題,回答得很好了第二個答案。

我提出這一個問題,因爲我認爲這是不公平的答案是完美的,準確的工作,因爲它應該帶走?

Entity Framework - Include in sub query? - Part 2

回答

2

This link here似乎解決您的問題

var result = context.Restaurant.Include("MenuCategory.MenuItems"); 
+0

幹得好 - 這個排序的問題,對我來說....但我真的不喜歡這種類型化的方法,這就是我爲什麼要使用的擴展方法。我將把擴展方法放在這個問題中 - 只是想知道是否有人能夠想出一個類型化的解決方案 – Paul 2009-11-02 21:07:09

+0

我已經在這裏設置了這個問題的第2部分,http://stackoverflow.com/questions/1663783/entity-framework -include-in-sub-query-part-2,如果你有興趣 – Paul 2009-11-02 22:59:11

7

您仍然可以使用Strongly類型的版本來執行此操作。只需使用:

Restaurant = context.Restaurant 
    .Include(r => r.MenuCategory.Select(m => m.MenuItems)) 
    .FirstOrDefault(r => r.RestaurantId == resaurantId);