Из спецификации RFC глагола Patch становится ясно, что глагол Patch
не должен принимать значения для частично обновить сущность, но выполнить следующие операции:
... Однако с PATCH закрытый объект содержит набор инструкций, описывающих, как ресурс, находящийся в данный момент на исходном сервере, должен быть изменен для создания новой версии.
В MSDN для класса Delta это также ясно, поскольку В описании патча говорится:
Заменяет исходный объект с помощью изменений, отслеживаемых этой дельтой.
В отличие от описания Put:
Заменяет исходный объект значениями, хранящимися в этой дельте.
Пока все хорошо, но я не мог найти способ отправить эти «инструкции» с помощью OData. Что бы я ни делал, Delta.Patch заменяет только значения.
Каким должен быть синтаксис запроса на исправление?
Я пробовал следующие способы:
PATCH http://localhost:55783/Products(1) HTTP/1.1
User-Agent: Fiddler
Host: localhost:55783
Content-Length: 19
Content-type: application/json
{ "Price": 432 }
А также
{ "op": "add", "path": "/Price", "value": 423432 }
И прочее рядом с этим.
Обновление:
Спасибо Майклу Муру и прочтению всего класса Delta с помощью ILSpy, я думаю, что это действительно ошибка в дизайне команды Patch.
Я обнаружил ошибку для Microsoft, вы можете проголосовать за нее, если вам тоже нужно ее исправить.