サーバーのAfterSaveEntities
メソッドの値をBreeze EFContextProvider
を使用して計算しています。私はいくつかの異なるエンティティタイプに対してこれをやっています。ComplexObjectの値が更新されましたAfterSaveEntities:サーバーからクライアントにメッセージがありません
新しい値を計算した後、データストアに保存します(他のSO質問で指定されているように新しいdatacontextを使用します)。
また、saveMap内のエンティティをこれらの新しいスカラー値で更新します。これらの値は、保存されるエンティティのプロパティであるComplexObjectを構成する整数プロパティです。
すべて素晴らしいです。 SaveChanges API関数がクライアントに返される直前に、プロパティがMy ComplexObjectがすべて正しいことがわかります。
現在、ほとんどのエンティティタイプでは、saveResultがクライアントにヒットすると、すべてが期待どおりになります。 EXCEPT ...私のエンティティタイプの1つ。
この問題のエンティティでは、ComplexObjectのプロパティは更新されません。 ComplexObjectのクライアント側のcomplexAspect.originalValues
プロパティを見ると、originalValuesは、オブジェクトを実際の値にすることを期待している値です... SaveChangesの結果でサーバーを離れる直前の値と同じです。
答えがAfterSaveEntities関数のentityInfo.OriginalValuesMap
に調整されているのだろうかと思います。しかしそれは違うようには見えなかった。 OriginalValuesMapを調整するときに、複雑なオブジェクトで作業するときに別の構文が必要になるのではないかと思います。
EDIT:私はこの予期しない動作が、私は新しいEntityInfoを作成し、AfterSaveEntitiesにSaveMap辞書に追加したときにのみ起こることを発見しました。
CreateEntityInfo(entity, Breeze.ContexProvider.EntityState.Unchanged)
で作成した新しいエンティティは、適切なタイプをキーとしてsaveMapに追加されます。
皮肉なことに、これらの余分なエンティティはすべて、クライアント側で複雑なオブジェクトのプロパティが正常に表示されます。しかし、saveMapにエンティティを追加するとすぐに、元のエンティティ(すでにsaveMap内にある)がうまく始まります。
私は私の問題を十分に明確にしたいと思う。ここで