2012-10-07 194 views
7

我將我的實體框架4.3數據庫第一個項目升級到新的實體框架5. 顯然,我現在使用DbContext而不是ObjectContext。 實體框架LoadProperty 5

我用新的替換了舊的.edmx文件。我的老業務代碼,以前用我的4.3 .edmx文件,現在有使用LoadProperty方法的代碼的問題:

using (var context = new MyEntities()) 
{ 
    Models.User user = context.Users.First(x => x.GUID == guid); 
    context.LoadProperty(user, o => o.Settings); 
    return user; 
} 

似乎LoadProperty不在的DbContext的有效手段。

無論如何,我怎樣才能獲得強大的類型加載?

我想我可以用

context.Users.Include("Settings") 

,但不是強類型和容易拼寫錯誤。

+1

你沒有使用EF4.3如果你使用ObjectContext - EF4.3基本上都是關於DbContext的......如果啓用延遲加載,你可以直接使用.Settings屬性而不必顯式加載它。請注意,它可能會觸發數據庫之旅,所以如果您經常這樣做,使用.Include()如下所示可能會更便宜。 – Pawel

+0

@Pawel:哦,對不起。我讀了一個關於更新後遇到的另一個問題的問題,並用「apprently」引用它來更好地描述我的情況。我通過了這句話。 – citronas

回答

15

您也可以對Lambda使用Include方法。 不要忘了using語句,因爲這包括來自DbExtension類:

using System.Data.Entity; 

...

context.Users.Include(u => u.Settings); 

這裏是關於包括擴展方法的一些信息:msdn info

+0

太棒了!正是我在找什麼!我希望你的回答能幫助其他人解決同樣的問題 – citronas

+0

史詩擴展我必須說。這是強烈的,因爲它是強類型。 –