breezejs:为经典ODATA服务调用savecChanges失败

时间:2013-08-29 14:11:42

标签: javascript breeze

我正在尝试保存使用经典WEBAPI ODATA服务加载的实体。

当在客户端调用saveChanges时,找到修改后的实体,然后代码进入'createChangeRequests',因为entityState被修改,它进入函数:

 function updateDeleteMergeRequest(request, aspect, prefix) {
    var extraMetadata = aspect.extraMetadata;
    var uri = extraMetadata.uri;
    if (__stringStartsWith(uri, prefix)) {
        uri = uri.substring(prefix.length);
    }
    request.requestUri = uri;
    if (extraMetadata.etag) {
        request.headers["If-Match"] = extraMetadata.etag;
    }
}

然而,它在第二行引发了异常,因为extraMetadata为null。这应该来自哪里?属性extraMetadata甚至不存在于'aspect'....

breeze确实有我模型的元数据,因为我可以加载实体。只是我无法拯救。

2 个答案:

答案 0 :(得分:1)

第13318行(breeze.debug.js):

    function mergeEntity(node, mappingContext, meta) {
      node._$meta = meta;
      meta.extra = node.__metadata;//added
      var em = mappingContext.entityManager;

答案 1 :(得分:0)

我只是通过Breeze 1.4.13解决了同样的问题。我通过在第14396行

中添加meta.extraMetadata = node .__元数据来解决了这个问题
function mergeEntity(mc, node, meta) {
    node._$meta = meta;
    meta.extraMetadata = node.__metadata;
    var em = mc.entityManager;