Представить записи одного родителя / нескольких детей как одну запись OData - PullRequest
1 голос
/ 04 апреля 2011

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

Родительская таблица:
ID Book
1 химия
2 Биология

Детский стол:
ID ParentId Subject
1 1 Элемент
2 1 Периодическая таблица
3 2 ячейки
4 2 Dissections

Я создал представление, основанное на внутреннем соединении родительской и дочерней таблиц (Parent.Id = Child.ParentId), и предоставил это представление модели данных сущностей как части службы данных WCF. Однако, когда я просматриваю канал OData в своем браузере, как и ожидалось, я вижу несколько записей, повторяющих родительскую информацию для каждой связанной дочерней сущности.

Вместо этого мне нужно только показать каждое родительское значение один раз со всеми связанными дочерними записями в их родительской записи. Пример (с использованием псевдо OData)

<entry>  
<Book>Chemistry</Book>  
<Subject>Elements</Subject>  
<Subject>Periodic Table</subject>  
</entry>  

<entry>  
<Book>Biology</Book>  
<Subject>Cells</Subject>  
<Subject>Dissections</Subject>  
</entry> 

Есть идеи?

Спасибо

1 Ответ

2 голосов
/ 04 апреля 2011

Представьте ваши две таблицы как два набора сущностей со связью.Таким образом, родитель будет иметь отношение 1 - много к дочернему столу.Затем представьте эту модель как Службу данных WCF.А затем выполните запрос наподобие (при условии, что набор родительских сущностей называется Parents, а родительский объект имеет свойство навигации, называемое Children): / Parents? $ Expand = Children. Это приведет к тому, что у вас будет родительский канал, в котором каждый родитель будет иметь встроенный каналего дети.

...