C#ODATA,使用子实体扩展N Level

时间:2012-12-27 17:14:02

标签: c# odata

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

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

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集合。

我花了很多时间在谷歌上找出了这个但是什么都没有。

一些试探性的:

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

最后一个问题是有没有办法扩展所有导入的数据模型。

感谢您的帮助。

环境:VS .NET 2010 / C#4.0

1 个答案:

答案 0 :(得分:2)

这应该可以正常工作:

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

我刚刚添加了" / mebs_channeltuning"在末尾。请注意,您不需要明确地扩展mebs_channel,因为它会因为子项被扩展而扩展(在更改之后)。

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

没有办法扩展一切。这是故意的,因为扩展使数据可能呈指数级增长,从而可能导致服务器和客户端上的问题。客户必须明确要求每次扩展。