Silverlight 4 RIAサービスアプリケーションには、子コレクションの深さを持つスプリンクラークラスがあります。スプリンクラーと深度は、1つのスプリンクラーに多くの深さがあるSQLデータベース内の2つのテーブルです。Silverlightの子データはクエリで取得されましたが、OnLoadCompletedメソッドでは利用できません
私は、このように、クラスからクエリを呼び出す:
Context.GetRunsForSelectedSprinkler(currentSprinkler.CurrentSprinkler, OnLoadListCompleted, null);
と私は同じクラスで、クエリの結果にアクセスする方法は次のとおりです。
private void OnLoadListCompleted(InvokeOperation<IEnumerable<Sprinkler>> invOp)
{
IEnumerable<Sprinkler> testRuns = invOp.Value;
}
のDomainServiceでの私のクエリは
です[Invoke]
public IEnumerable<Sprinkler> GetRunsForSelectedSprinkler(string selectedSprinkler)
{
// this.ObjectContext.ContextOptions.LazyLoadingEnabled = true;
var sprinklers = (this.ObjectContext.Sprinklers.Include("Depths").Where(c => c.Sprinkler1 == selectedSprinkler));
return sprinklers;
}
私がデバッグを使用して見つけたのは、このクエリの内部にあるのは、GetRunsForSelectedSprinklerのDepths collectiスプリンクラーの各スプリンクラーがオンになっています。しかし、このクエリの結果を受け取るOnLoadListCompletedメソッドでは、Sprinklerテーブルのスプリンクラーデータはそこにありますが、Include( "Depths")のためにクエリによって設定されたDepths子コレクションはそこには存在しませんDepthsはnullです。どういうわけか、このDepthsコレクションは返品処理中に失われました。
私はこれをどのように修正できるか知っていますか?
私はGoogleを広く利用していますが、クエリは正しいと思いますが、子コレクションを返さないことについては何も見つかりません。
Depthsコレクションの[Include]をメタデータに入れてみましたが効果がありません。私もthis.ObjectContext.ContextOptions.LazyLoadingEnabled = true;
と設定しようとしましたが、効果はありません。 クエリは正しく実行されますが、結果はOnLoadListCompletedに正しく返されず、何らかの形で関連する子データが失われます。