Создание записей с несколькими ссылками в проекте служб данных WCF на основе модели EF - PullRequest
1 голос
/ 30 июня 2011

Я пытаюсь создать службу данных WCF, которая предоставляет базу данных, представленную моделью структуры сущностей, и сталкивается с проблемой выполнения запросов HTTP POST для таблицы с несколькими наследованиями 1- *.

Таблица структуры сущности выглядит следующим образом: Model

Большинство таблиц с одной родительской сущностью могут быть доступны через POST к родительскому URI, т. Е. 'http://url/data.svc/parent(id)'. ПроблемаЯ сталкиваюсь с тем, что я не могу использовать этот метод из-за множественного наследования.Я мог бы позволить одному FK быть обнуляемым, и обновлять с отдельной операцией PUT, но это просто плохой код.

Я создаю HTTP-запрос, используя JSON.Вот пример того, что я пытался

POST http://url/data.svc/Order_Item HTTP/1.1
User-Agent: Fiddler
Accept: application/json
Content-Type: application/json

{"Count": 2, "Item": {"uri": "http://url/data.svc/Items(ID)"}, "Order": {"uri": "http://url/data.svc/Order(ID)"}}

Метод InitializeService выглядит следующим образом:

public static void InitializeService(DataServiceConfiguration config)
     {
          config.SetEntitySetAccessRule("*", EntitySetRights.All);
          config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
          config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
     }

Я знаю, что это, вероятно, довольно просто, но кто-то может помочь мне понятьсинтаксис размещения связанных объектов?Заранее спасибо

1 Ответ

0 голосов
/ 01 июля 2011

Вы должны быть в состоянии сделать это, используя пакетный запрос, составленный из одного запроса, отправляющего новый OrderItem, и одного запроса, чтобы обновить ссылку на другой объект.Это должно быть чем-то похожим на следующее.

[Uri] / $ batch

[1] POST [Uri] / Order (1) / Order_Item

[2]POST [Uri] / Item (1) / Order_Item / $ link

Похоже, вы используете Fiddler.Вы также можете использовать клиент службы данных WCF и выполнить ту же работу, а также получить представление о том, как выглядит запрос в Fiddler.

Информация об использовании запроса $ batch: http://msdn.microsoft.com/en-us/library/dd744839.aspx

...