我知道這已經以幾種方式問過,但沒有一個答案似乎適用於我 - 或正確 - 或最新,所以我會再試一次。EF4 - 自我跟蹤的實體和繼承和熱切加載
我有一個很大的模型,有幾個物體的繼承實體。一個示例是包含TimetableEvent集合的時間表。 TimetableEvent有幾種子類型,如InterviewTimetableEvent,BreakTimetableEvent和ExercisetimeTableEvent。 ExerciseTimetableEvent與練習實體有關係。
我需要使用自我跟蹤實體,因爲我使用WCF後端以無狀態方式向多個WPF客戶端提供數據。
所以,我需要加載一切,我認爲自我跟蹤的實體會自動做到這一點,但它似乎沒有。
因此,要獲得一個時間表,我需要做這樣的事情:
var tt = (from s in ESSDataContainer.Timetables
.Include("TimetableEvents")
where s.TimetableId == timetableid
select s).FirstOrDefault();
這會給我TimetableEvents但不是都跟ExerciseTimetableEvents練習。我試過以下(和幾個其他建議),但沒有運氣:
var tt = (from s in ESSDataContainer.Timetables
.Include("TimetableEvents")
.Include("ExerciseTimetableEvents.Exercise")
where s.TimetableId == timetableid
select s).FirstOrDefault();
有沒有解決方案呢?
如果沒有,我會回到正常的上下文跟蹤,並從本地容器連接到數據庫,而不是使用WCF。
乾杯
作爲一個簡要說明,我只想補充一點,經過多年來多次嘗試使數據訪問變得簡單易行,微軟(以及幾乎所有其他人)都失敗了!這總是比應該更難。這應該是諾貝爾獎......那麼我們可能會看到一些真正易用的東西! – Jonesie 2010-11-04 05:54:14
做這樣的陳述時要小心,你會在這裏引起騷亂。和你的Q一樣,我遇到了同樣的問題。你不能急於加載派生關係,因爲你不知道它的類型。我發現的唯一解決方案是將導航移至父級或2個數據庫調用。 – RPM1984 2010-11-04 09:23:13
@ RPM1984查看我的答案,瞭解沒有模式更改或多次調用的解決方案。 – 2010-11-04 14:50:03