1

BreezeJS 用のカスタム DataService アダプターを実装しました。Breeze を RESTful バックエンド サービス (OData または ASP.NET Web API ではない) で使用したかったのです。

これまでのところ-学習曲線の後のまともな結果。

変更の保存を呼び出すと、その後、クライアント上のエンティティが「変更なし」としてマークされないという問題があります。それらは同じ entityState を保持します。

バックエンド サービスへの AJAX リクエストの成功ハンドラーと関係があると思います (WebAPI アダプターへのソース コードを見てください)。

        success: function(data, textStatus, XHR) {
            if (data.Error) {
                // anticipatable errors on server - concurrency...
                var err = createError(XHR);
                err.message = data.Error;
                deferred.reject(err);
            } else {
                // HACK: need to change the 'case' of properties in the saveResult
                // but KeyMapping properties internally are still ucase. ugh...
                var keyMappings = data.KeyMappings.map(function(km) {
                    var entityTypeName = MetadataStore.normalizeTypeName(km.EntityTypeName);
                    return { entityTypeName: entityTypeName, tempValue: km.TempValue, realValue: km.RealValue };
                });
                var saveResult = { entities: data.Entities, keyMappings: keyMappings, XHR: data.XHR };
                deferred.resolve(saveResult);
            }

        },

応答に「エンティティ」の配列が含まれているようです。これらの「エンティティ」はどのように見えますか? クライアントが更新された entityAspect.entityState 値で送信したものをエコーし​​ます (サーバーは「Unchanged」で応答します)?

deferred.resolveそれは呼び出しに渡されるべきものですか?

4

1 に答える 1