2011-12-14 6 views
0

私は当初、銀色の部分をデバッグする方法がわからないため、これはINotifyPropertyChanged/Bindingの問題だと思っていました。だから、私はforeachループ内にメッセージボックスを配置し、データがそのように返された後に値を表示する必要がありました。更新されたデータをサービスから取得するのに問題があることが判明しました。私はこのサービスを使ってサーバー上のデータを更新し、データを再ロードするためにコールバックを取得します。このサービスの部分が正しいデータを返しています(ブレークポイントを使って検証したので、結果が保持されているデータを見ることができます)。しかし、銀色面は正しいデータを得ていない。ここに関連コードがあります。WCF RIAサービスの戻りデータがサービスの2つの側面で一致しない

public IQueryable<OurClass> GetItems(string condition) 
{ 
    var result = from items in context.OurClass 
        where item.value == condition 
        select item; 

    return result; //had my breakpoint here and the values were the correct updated values 
} 

/

Context.Load<OurClass>(Context.GetItemsQuery(condition)).Completed += new EventHandler(Context_LoadCompleted); 

/

private void Context_LoadCompleted(object sender, EventArgs e) 
{ 
    IEnumerable<OurClass> result = ((LoadOperation<OurClass>)sender).Entities; 
    //This is where I put a MessageBox to view the returned results and the data was different 
    //than what was contained in the other result 
} 

任意のアイデア何これを引き起こす可能性が?私は次に何を見ますか?

EDIT:

いくつかの例のデータはOurClass.OurPropertyは、サーバ側で「テスト」に等しくなりますが、それは、クライアント上で受信されると、それは古い値だった「開発」を等しくなります。 IEnumerableは新しく追加されたレコードを保持し、削除されたレコードは保持しません。以前に存在していたものには、新しい値ではなく古いプロパティ値が含まれます。

+0

一つの理由です。 'OurClass'のセットを返してキー列が' int'の場合、返される各項目にはキーの一意の 'int'があることを確認してください。 (消費者側ではなく、サービス側でこれを確認してください) – EtherDragon

+0

Key列の意味が不明です。私たちの主なキーはIdプロパティとそのGuidです。デフォルトでは、彼らはあなたが話しているものであってはならないので、明らかに同じであることはできません。私は明日もこれを調べます。先端に感謝します。 –

+0

各データ転送オブジェクトをキーとして(プロパティで '[Key]'属性で表されます)EFを使用している場合は、このキーがデータベースから生成されます。 'OurClass'のクラス定義を見て、プロパティは '[Key]'とマークされています – EtherDragon

答えて

1

ソリューションは、私は、クエリの呼び出しにパラメータLoadBehavior.RefreshCurrentを追加するために必要なことでした。だから、この:する必要が

Context.Load<OurClass>(Context.GetItemsQuery(condition)).Completed += new EventHandler(Context_LoadCompleted); 

この:いくつかの項目のキー列が同じであれば、データが異なる可能性が

Context.Load<OurClass>(Context.GetItemsQuery(condition), LoadBehavior.RefreshCurrent, true).Completed += new EventHandler(Context_LoadCompleted); 
0

サービスの両面でデータはどのように異なるのですか?いくつかのサンプルデータを表示できますか? wiresharkのようなものを使ってデータを見ることができます(銀河アプレットを実行しているサーバーやクライアント上にある必要があります)。

銀色のデバッグを正しく試しましたか?ここに示すように、プロセスは:ここで説明するようhttp://www.michaelsnow.com/2010/04/22/silverlight-tip-of-the-day-2-attach-to-process-debugging/

私はまた、トレースWCFをオンに推薦する:http://msdn.microsoft.com/en-us/library/ms733025.aspx

+0

私はあなたのリンクを見ていきます。ありがとう、私は期待したデータと私が得たものの説明をもう少し詳しく投稿しました –

+0

最終的には、私は既にスクリプトモードで自動的に接続されていたため、今すぐ実現してください。間違ったVisual StudioインスタンスのAttach to Processウィンドウを誤って開き、そのプロセスのSilverlightタグを見ただけなので、そのことが分かりました。明日、WCFのトレースを調べて、受信側の値が送信側の値と同じでない理由を調べる必要があります。 –

関連する問題