【问题标题】:Expose single parent/multiple child records as one OData entry将单个父/多个子记录公开为一个 OData 条目
【发布时间】:2011-04-04 16:55:28
【问题描述】:

我有一个典型的父表/子表设置,其中父表中的一行可以通过外键具有多个子表关联记录。一个例子:

父表:
身份证
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> 

有什么想法吗?

谢谢

【问题讨论】:

    标签: visual-studio-2010 sql-server-2008 odata ado.net-entity-data-model wcf-data-services


    【解决方案1】:

    将您的两个表公开为具有关系的两个实体集。所以 Parent 将与 Child 表有 1 - many 关系。然后将该模型公开为 WCF 数据服务。然后运行如下查询(假设 Parent 实体集称为 Parent 并且 Parent 实体有一个名为 Children 的导航属性): /父母?$expand=孩子 这将为您提供父母的提要,其中每个父母都将拥有其孩子的内联提要。

    【讨论】:

    • 是的,这似乎就是我要找的。感谢您的回答。如果我的两个表具有多对多关系,需要两者之间的查找表呢?我创建了从表 a 到查找表的关联以及从查找表到表 b 的另一个关联。有没有办法可以通过在 URI 中加载表 a 来扩展表 b?
    • 我意识到我在评论区提出了另一个问题,为此我深表歉意。这似乎是一个相关的问题,所以我认为搜索一个主题将为两者提供结果。谢谢。
    • 没关系,在stackoverflow.com/questions/4441665/… 找到了答案。再次感谢您的帮助。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多