2014-01-16 6 views
1

При попытке обновления объекта JayData запускает метод PatchEntity на бэкэнд WepAPI. Я считаю это неправильным, так как для UpdateEntity необходимо вызвать.Неверное поведение JayData с помощью WebApi v2 Одата во время обновления объекта. Завершение конечной точки патча

Функциональность добавления и удаления объектов работает нормально. На внутреннем интерфейсе у меня есть контроллер, который наследуется от EntitySetController <>

public class BaseODataController<TService, TEntity, TEntityDto, TIdentityType> : EntitySetController<TEntityDto, TIdentityType> 
{ 
    //..... 

     protected override TEntityDto UpdateEntity(TIdentityType key, TEntityDto update) 
     { 
      // is not getting called 
      _service.Update(update); 
      return base.UpdateEntity(key, update); 
     } 

     protected override TEntityDto PatchEntity(TIdentityType key, Delta<TEntityDto> patch) 
     { 
      // gets called 
      return base.PatchEntity(key, patch); 
     } 


    //..... 
} 

Вот код, который вызывается на стороне клиента:

vm.updateRole = function(r) { 
     return $data.initService('/odata/$metadata').then(function (context) { 
      r.Name = "NewUpdateRole"; 
      context.Role.update(r); 
      r.entityState = $data.EntityState.Modified; 
      context.saveChanges().then(function(result) { 
       debugger; 
      }); 

     }); 

Я пропускаю что-то здесь?

ответ

1

JayData отправляет запросы MERGE или PATCH на основе свойства dataServiceVersion конфигурации поставщика odata.

$data.initService('/odata/$metadata', {dataServiceVersion: '3.0'}) 

2,0 причины MERGE и запросы 3.0 причины ЗАПЛАТА для согласования с WCF Data Services OData реализации.

Если такое поведение не соответствует требованиям WebAPI OData, есть второй вариант настройки, чтобы определить тип запроса:

$data.initService('/odata/$metadata', {UpdateMethod: 'PATCH'}) 

Вы можете сделать попытку модифицировать PATCH к UPDATE HTTP Глагол