json патч с EFcore и asp. net core для частичного обновления связанных, вложенных объектов - PullRequest
0 голосов
/ 06 августа 2020

Указанный документ: https://docs.microsoft.com/en-us/aspnet/core/web-api/jsonpatch?view=aspnetcore-3.1

Я пытаюсь выполнить частичное обновление / исправление с помощью efcore и jsonPatch. Документ выглядит прямолинейно, но когда я пытаюсь сделать то же самое, я получаю сообщение об ошибке ниже и не понимаю, в чем проблема. Я пробовал то же самое с помощью автоматического сопоставления, но у него другой набор проблем.

Мой контроллер

        [HttpPatch]
    public object JsonPatchWithModelState(int id
                ,[FromBody] JsonPatchDocument<PurchaseOrder> patchDoc)
    {
        if (patchDoc != null)
        {
            var purchaseOrder = GetById(id); //get from db and include child objects
            if(purchaseOrder!=null)
            {
                patchDoc.ApplyTo(purchaseOrder);
                _context.SaveChanges();
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }

                return GetById(id);
            }
            else
            {
                return BadRequest(ModelState);
            }
        }
        else
        {
            return BadRequest(ModelState);
        }
    }

Мой запрос api от почтальона

https://localhost:44382/api/PurchaseOrderTest?id=3

    [

{"op": "add", "path": "/ supplier", "value": "testSuplier33"}, {"op": "add", "path": "/ PurchaseOrderItem / -", "value": {"itemCode" : "ccc33"}}]

Сообщение об ошибке:

Microsoft.AspNetCore.JsonPatch.Exceptions.JsonPatchException: 'The target location specified by path segment '-' was not found.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...