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
それは呼び出しに渡されるべきものですか?