2012-02-20 83 views
1

我在我的EDMX中有一堆實體,我將LazyLoading設置爲false。 據我所知,我現在必須顯式加載每個查詢實體實體。 然而,我發現最多的參考文獻指向DbContext而不是ObjectContext用EF 4.1在LINQ查詢中急切加載一個實體ObjectContext

而且看起來有很大的區別,因爲在代碼中如何進行熱切加載。 在我的情況下,我有1:1關係的客戶和地址。

如何正確加載地址時,例如,客戶#1488?

from c in context.Customers 
where c.Id = 1488 
select c; 

然後,我希望能夠用c.Address.Streetc.Address.City

如何加載地址(ES)?

+0

是'客戶'和'Addresses' 1:1奧德1:N(只是因爲你提到的「地址(ES)」如果它是1:1,你也可以考慮改變模型,使'客戶'和'地址'是映射到兩個表的一個實體。 – 2012-02-20 13:24:47

+0

一個客戶有0或1個地址。 – John 2012-02-20 16:05:49

回答

1

其他人可能會給你一個關於DbContext更準確的答案。我一般用ObjectContext在哪裏工作這段代碼將做的工作:

from c in context.Customers.Include("Addresses") 
where c.Id = 1488 
select c; 
+0

這實際上似乎工作,謝謝。在沒有寫字符串的情況下這樣做?如果Addresses實體更改名稱,我必須更新所有字符串。是不是有Entities.EntityNames.Addresses之類的東西? – John 2012-02-21 07:50:42

+0

沒有開箱即用的方法,但看看這裏:http://stackoverflow.com/questions/2586351/ef4-linq-includestring-alternative-to-hard-coded-str ing – 2012-02-21 08:29:21

+0

@John:嗨,我今天遇到了這個:http://stackoverflow.com/questions/9591934/how-to-include-subset-in-ef#comment12166241_9591985 – 2012-03-07 08:09:08