2

WCF/OData Web サービスは、タイプの安静な項目を 返しますvBeheer

クライアントで、以下を消費するメソッドを作成しました。

        SRTDBEntities es = new SRTDBEntities(_serviceRoot);
        return es.vBeheer.Where(b => 
            b.TrackID == trackid && 
            b.PersoonID == CurrentPersoon.ID );

ただし、(デバッグの午後の後)式に.ToList()を追加すると、結果セットが破損することに気付きました。アイテムのCount()は正しく、期待どおりですが、アイテムの値が間違っています。多くは重複しており、多くは欠落しています(明らかに)。

だから私はlinqpadでこれをテストしました:

vBeheer.Where (b => b.TrackID==23 && b.PersoonID == 19   ).Dump();
  • 期待どおりにサービスから正しい結果を返します。ID は「行」ごとに一意の値である必要があることに注意してください。

右

しかし、 .ToList() を追加するとうまくいかない

 vBeheer.Where (b => b.TrackID==23 && b.PersoonID == 19   ).ToList().Dump();

これにより、多くの重複した(パターンなしで?)アイテムが発生します

ここに画像の説明を入力

この動作は予期せず望ましくありません。そしてさらに興味深い。データベースが正しい結果を返し、(Web サービスで) サーバーをデバッグすると、結果はまだ正しいと判断しましたが、クライアントに到着すると、ひどく間違った結果になります。

IT は問題になりませんが、データはとにかく ToList() を実行する DevExpress コンポーネント (DXGrid) によって使用されます。

nb: ブラウザでクエリを実行:

http://localhost:52671/SRTDataService.svc/vBeheer()?$filter=TrackID%20eq%2023%20and%20PersoonID%20eq%2019

予想される一意のアイテムのセットを返します。

4

1 に答える 1