Как связать два существующих элемента (многие-ко-многим) через HTTP-протокол OData? - PullRequest
0 голосов
/ 21 мая 2011

Я работаю с моделью данных EF, которая предоставляется через конечную точку службы OData. Он имеет сущности «Человек» и «Группа», которые связаны через отношения многие ко многим.

my data model

Я хотел бы добавить ссылку от существующего лица с существующей группой через OData, но я не смог выяснить, как это сделать. Протокол OData, указанный здесь (ссылка на odata.org) , похоже, указывает, что мне нужно выполнить следующий HTTP-запрос для связи лица № 1 с группой № 1:

С телом следующим образом:

{
    __count: 1,
    results: [{
        uri: "http://localhost:49432/MyService.svc/Groups(1)"
    }]
}

Однако, когда я это делаю, я получаю следующую ошибку:

400 Bad Request
"Missing URI element. For link operations, URI element must be specified."

Понятия не имею, какой элемент URI отсутствует. Я предоставил это как в URI запроса, так и в полезной нагрузке ...

Я также попробовал несколько других подходов, но пока безуспешно. Есть предложения?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Если вы хотите сделать более одной ссылки, вот как вы это делаете:

  • Метод: MERGE
  • URI: "http://localhost:49432/MyService.svc/Persons(1)"

Полезная нагрузка должна выглядеть примерно так:

{
  Groups: [ { __metadata: { uri:"http://localhost:49432/MyService.svc/Groups(1)" },
            { __metadata: { uri:"http://localhost:49432/MyService.svc/Groups(2)" }
  ]
}

Надеюсь, это поможет.

Спасибо Pratik

0 голосов
/ 21 мая 2011

Я правильно понял, кроме тела запроса.Это должно было быть намного проще:

{ uri: "http://localhost:49432/MyService.svc/Groups(1)" }

Sweet!

[EDIT]

Просто примечание для дальнейшего использования: похоже, только одна ссылка может быть создана ввремя, используя этот метод.

...