Sam
Sam

Reputation: 14596

breezejs: calling savecChanges for a classic ODATA service fails

I'm trying to save an Entity that was loaded using a classic WEBAPI ODATA service.

When saveChanges is called on the client side, the modified entity is found and then the code goes into ´createChangeRequests´ and because the entityState is modified it goes into the function :

 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;
    }
}

However it raises an exception on the second line because extraMetadata is null. Where is this supposed to come from ? The property extraMetadata does not even exist on 'aspect'....

breeze does have metadata of my model since I can load entities. It's just that I cannot save.

Upvotes: 2

Views: 272

Answers (2)

nyn3x
nyn3x

Reputation: 919

I just stumpled across the same problem with Breeze 1.4.13. I resolved the problem by adding meta.extraMetadata = node.__metadata in line 14396

function mergeEntity(mc, node, meta) {
    node._$meta = meta;
    meta.extraMetadata = node.__metadata;
    var em = mc.entityManager;

Upvotes: 0

Cugar Wang
Cugar Wang

Reputation: 11

line 13318(breeze.debug.js):

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

Upvotes: 1

Related Questions