我正在使用WCF Dataservice/EF 4.1和一個WPF客戶端應用程序。 這是我的問題更簡單的形式。可以說我查詢客戶:我可以在已跟蹤的實體上「展開」其他數據嗎?
var query = (from o in ServiceRef.Clients.Expand("Addresses,PhoneNumbers,EmailAddresses")
where o.FirstName.ToLower().Contains(sf) ||
o.LastName.ToLower().Contains(sf) || ...
orderby o.LastName
select o).Take(100);
這是我需要身份的客戶。然而,在這條道路上,我很想看到評論,購買歷史或其他相關實體在第一個查詢中不是「展開」。如果我再次查詢,使用相同的ServiceRef上下文,我永遠不會得到「評論」擴大。
我猜這跟上下文有關,發現'Client'實體已經被跟蹤,因此沒有對服務執行新的查詢。
現在有些帖子說,一個人不應該在這麼長時間內保留一個DBContext,而我完全不同意。這是一個簡單的主/細節方案。爲每個「詳細信息查詢」創建一個新的上下文以獲取附加數據似乎有些不妥。有沒有辦法強制EF「重新加載」實體以獲得更多數據?
我當然可以擴展我在初始查詢中需要的每個附加實體。但是,我爲每個搜索結果提供了大量的數據。其中95%永遠不會被使用。
要清楚。我所要求的更多是「最佳實踐」問題。中間有路嗎?在所有時間擴展(...)所有數據之間<>始終創建新的上下文。有沒有一種方法可以根據需要加載額外的數據。
Thanx,Andreas
謝謝Ladislav指着我在LoadProperty()。我從來沒有理解到現在爲止。在上下文的生命週期部分,我不得不說,我發現自己經常調整工作單元的「範圍」,主要是一旦我實現了save()。 Thanx – Andreas
只是想知道,所有跟蹤的EF,這不是很好/可能有這種行爲內置...如果已經跟蹤,但不是與所有屬性 - >加載缺少的屬性 – Andreas