2011-10-19 7 views
0

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に正しく返されず、何らかの形で関連する子データが失われます。

答えて

0

最終的に適切なキーワードを推測し続けると、Googleは正解を返すことができ、私自身の質問に答えることができます。私の問題を解決し、子コレクションが正常に戻った

http://silverlightguy.com/2010/07/23/trick-for-solving-wcf-ria-services-issue/

:私はこのページの助言に従いました。

これはRIAサービスで既知の問題であると見なされますが、発見することは困難です。そして、私はまた、このページが見つかりました:

InvokeOperation entities become null

をし、私の代わりに、呼び出しのクエリ作ってみましたが、この方法上記の方法では、働いていた見つける前に、それを解決し終えていなかったので、これが動作するかどうかわかりません。

この問題について言及しているページもありますが、それをフォローアップしていません。上記掲載それらの人々に

Silverlight 4 LoadOperation returns null

感謝。

関連する問題