Как вернуть полный граф объектов с помощью WCF Data Services? - PullRequest
3 голосов
/ 21 февраля 2012

У меня есть модель класса, которая по своей природе рекурсивна. Для краткости я опишу это как:

  • A Шаблон содержит множество Сокетов объектов
  • A Сокет принимает множество Шаблон Объекты

Обычно я получаю графы объектов, которые выглядят так:

  Root Template
     |--> Sockets
             |--> Socket S1
             |       |--> Templates
             |               |--> Template T1
             |               |--> Template T2
             |                       |--> Sockets
             |                               |--> Socket S1.1
             |--> Socket S2
                     |--> Templates
                             |--> Template T2  <-- it's valid to reuse templates
                             |--> Template T3
                             etc

Я хочу вернуть весь граф объектов через службы данных WCF за один раз.

Я добавил пользовательский метод в свой DataService, который строит полный график:

    [WebGet]
    public IEnumerable<Template> GetFullyExpandedTemplate(Guid templateId)
    {
        var result = _templateRepo.GetFullyExpandedTemplate(a => a.Id == templateId);
        return new List<Template>() { result };
    }

Результат определенно полностью заполнен (проверено. Но если я перейду к следующему:

http://localhost/MySite/MyDataService.svc/GetFullyExpandedAggregate?id=guid'353934DD-916E-43EC-9CAE-EAB8FA894EBA'

Я вижу только объект Root Template - он не возвращает весь график .

Какие-нибудь идеи о самом чистом способе сделать это?

Ответы [ 2 ]

0 голосов
/ 25 октября 2012

Это не может быть сделано AFAIK.В лучшем случае вы могли бы перехватывать запросы к службе op и перенаправлять на URI с полным расширением, но пути расширения все равно будут статическими.

0 голосов
/ 22 февраля 2012

Подойдет ли вам опция $ expand url?Возможно, вам придется переключиться на запросы к набору сущностей вместо пользовательского метода.

...