2010-11-26 141 views
3

Supose我有以下從數據庫表創建實體:級聯渴望加載問題

學生

學生包括個人導航性能。

人有導航屬性國家連接查找表國家。

在學生元數據中,我把[Include]作爲導航屬性Person。 在個人元數據,我把[Include]導航財產國家。

當裝載學生的數據,我想預先加載喜歡包括個人和國家的數據:

this.ObjectContext.Students.Include("Person").Include("Country"); 

這是工作的罰款,當我使用ASP.NET數據地頭服務的早期版本。現在,當它更改爲WCF Ria服務時,上述方式無法工作。 系統給我的錯誤說,國家不是學生的導航屬性。

如何解決此問題?

回答

2

錯誤是正確的。

Include是你在查詢的ObjectQuery<T>,在這種情況下是「學生」。

CountryPerson的導航屬性,而不是Student

你的代碼改成這樣:

this.ObjectContext.Students.Include("Person").Include("Person.Country"); 

或者乾脆:

this.ObjectContext.Students.Include("Person.Country"); 

由於EF會自動包括基於內嵌的 「人」 包括。

您需要記住Include基於ObjectQuery<T>返回ObjectQuery<T>它被調用。

因此,只是因爲你在做Students.Include("Person"),那並不意味着在那一點上,變量是ObjectQuery<Person> - 變量仍然是ObjectQuery<Student>

+0

太棒了!很高興知道。簡單解決方案 – KentZhou 2010-11-26 15:16:20