我已经为 BreezeJS 实现了一个自定义 DataService 适配器——我想将 Breeze 与 RESTful 后端服务(不是 OData 或 ASP.NET Web API)一起使用。
到目前为止 - 经过学习曲线后取得了不错的成绩。
我有一个问题,当我调用保存更改时 - 之后我在客户端上的实体没有被标记为“未更改”。他们保持相同的实体状态。
我认为它与对后端服务的 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 值的内容相呼应(服务器响应“未更改”)?
那是应该传递给deferred.resolve
调用的吗?