【问题标题】:C# ODATA , Expand N Level with sub-entitiesC# ODATA , 用子实体扩展 N 级
【发布时间】:2012-12-28 16:52:29
【问题描述】:

我真的需要你的帮助来实现以下目标:

首先让我向您展示我的数据库数据模型:

1- mebs_schedule=>mebs_ingesta
2- mebs_ingesta=>mebs_ingestadetails
3- mebs_ingesta=>mebs_videoitem
4- mebs_ingesta=>mebs_channel=>mebs_channeltuning

使用下面的 URI,我可以得到这棵树以提供时间表参考:

mebs_schedule=>mebs_ingesta

mebs_ingesta=>mebs_ingestadetails

mebs_ingesta=>mebs_videoitem

mebs_ingesta=> mebs_channel

URI = "mebs_schedule({0})?$expand=mebs_ingesta/mebs_videoitem,mebs_ingesta/mebs_ingestadetails,mebs_ingesta/mebs_channel" 现在我还想为每个 mebs_channel 事件获取关联的 mebs_channeltuning 集合。

我在 google 上花了一些时间来了解这是如何实现的,但没有。

一些暂定:

mebs_schedule(79)?$expand=mebs_ingesta&expand=mebs_videoitem,mebs_ingestadetails,mebs_channel&expand=mebs_channe.mebs_channeltuning

最后一个问题是有什么方法可以扩展所有导入的数据模型。

感谢您的帮助。

环境:VS .NET 2010 / C# 4.0

【问题讨论】:

    标签: c# odata


    【解决方案1】:

    这应该可以正常工作:

    URI = "mebs_schedule({0})?$expand=mebs_ingesta/mebs_videoitem,mebs_ingesta/mebs_ingestadetails,mebs_ingesta/mebs_channel/mebs_channeltuning" 
    

    我只是在最后添加了“/mebs_channeltuning”。请注意,您不需要仅显式扩展 mebs_channel,因为它的子通道正在扩展(在更改之后),它将被扩展。

    暂定的解决方案有很多问题。一种是 expand 需要在它前面加上 $ 符号(否则它不会被识别为查询选项)。其次,服务器通常只接受一个 $expand 查询选项。 (而且 . 不是扩展的分隔符)。

    没有办法扩展所有内容。这是有意的,因为扩展会使数据潜在地呈指数增长,因此可能会导致服务器和客户端出现问题。客户必须明确要求每次扩展。

    【讨论】:

    • 感谢 Vitek,我已经对此进行了测试,但出现错误“准备命令定义时发生错误。有关详细信息,请参阅内部异常。”
    • 你有内部异常吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多