2010-11-26 2 views
3

Supose:カスケード熱心ローディング問題

学生

学生は、ナビゲーションプロパティとして人が含まれます。

人物にナビゲーションプロパティがあります。ルックアップテーブルを接続する国。

学生用メタデータでは、ナビゲーションプロパティPersonに[Include]を付けます。 人物のメタデータでは、国土のナビゲーションプロパティに[Include]を付けます。生徒データをロードする場合

、私は積極的なロードにしたい人や国のデータを含めるのが好き:私はASP.NETデータリアサービスの以前のバージョンを使用する場合

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

これは罰金働いていました。今すぐWCF Ria Serviceに変更されたとき、上記の方法ではもう動作しません。 システム国には学生のナビゲーションプロパティではないというエラーが表示されます。

この問題を解決するにはどうすればよいですか?

答えて

2

エラーは正しいです。

Includeは、質問しているObjectQuery<T>です(この場合は「学生」)。

Countryは、ではなく、Personのナビゲーションプロパティです。

これにあなたのコードを変更

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

それとも単に:EFが自動的にネストをもとに、 "人" が含まれるように

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

含まれています。

Includeは、呼び出されたObjectQuery<T>に基づいてObjectQuery<T>を返します。

Students.Include("Person")ということは、その時点では意味していないので、変数はObjectQuery<Person>です。変数はまだObjectQuery<Student>です。

+0

素晴らしい!知っておいてよかった。シンプルなソリューション! – KentZhou

+0

@KentZhou - 喜んで助けてくれたら、正解としておいてください。 – RPM1984