Прежде всего, я новичок в .NET WCF oData DataService и использую jQuery на стороне клиента.
Я ищу лучший способ (правильный путь) для обработки добавления двух разных объектов в одну транзакцию (сообщение).
Например. У меня есть родительский объект с идентификатором и именем и дочерний объект с идентификатором, ParentID и именем.
Я хотел бы добавить родителя, получить идентификатор родителя и использовать его для добавления каждого потомка. Тем не менее, при добавлении родительского или дочернего объекта происходит сбой, он должен откатить все транзакции.
Один из способов, который я задумал сделать, - создать метод WebInvoke, который будет принимать строку json, например, {{Parent ': {"name": "Daddy"}, "Children": [{"name": "Tom" }, { "имя": "Дик"}, { "имя": "Гарри"}]}
Во время тестирования я жестко закодировал аргумент в методе, при вызове все работало нормально. Однако при вызове POST из jQuery параметр имеет значение NULL (раздражает).
Мне удалось отправить параметр в метод путем передачи строки json urlencoded как части строки запроса. Однако строка запроса имеет ограничение по размеру, и я предпочитаю ее не использовать.
Вопрос 1) Можно ли использовать WebInvoke POST с параметрами в службе данных WCF?
Вопрос 2) Есть ли лучший (правильный) способ сделать то, что я пытаюсь сделать?
Еще один способ сделать это (мне это не нравится) - вызвать POST для родительского объекта, получить его идентификатор и использовать его для публикации каждого дочернего элемента. Если что-то не получится, вызовите delete для всех.