1

我有一個典型的父表/子表設置,其中父表中的行可以通過外鍵擁有多個子表關聯記錄。一個例子:將單個父/多個子記錄公開爲一個OData條目

父表:
ID書
1化學
2生物學

子表:
ID的ParentId主題
1個1個元素
2 1元素週期表
3 2細胞
4 2解剖

我創建了一個基於內部連接父和子表的視圖(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> 

任何想法?

謝謝

回答

2

將您的兩個表格公開爲具有關係的兩個實體集合。所以Parent與Child表有一對多的關係。然後將該模型公開爲WCF數據服務。然後運行一個查詢(假設父實體集被稱爲Parents,並且Parent實體具有名爲Children的導航屬性): /Parents?$ expand = Children 這將爲您提供父母的飼料,其中每個父母將內聯其子女的飼料。

+0

是的,這似乎是我正在尋找。感謝您的回答。如果我的兩張桌子之間存在多對多關係,需要在兩者之間查找表格的情況呢?我創建了從表a到查找表的關聯,以及從查找表到表b的另一個關聯。有沒有一種方法可以從URI中的表格a中展開表格b? – Chris 2011-04-04 18:50:24

+0

我認識我在評論區提出另一個問題,爲此我表示歉意。看起來雖然是一個相關的問題,所以我認爲對一個主題的搜索可以爲兩者提供結果。謝謝。 – Chris 2011-04-04 18:51:06

+1

沒關係,在http://stackoverflow.com/questions/4441665/use-linq-for-double-nested-odata-collection找到答案。再次感謝你的幫助。 – Chris 2011-04-04 18:57:14

相關問題