2015-10-15 111 views
0

我已经能够在我的C#API中为Azure移动服务使用Expand属性来展开子对象,并且效果很好。展开查询Azure移动服务给儿童的儿童

然而,子对象也有一个子对象,我希望能够得到顶级项目时使用。

也就是说,我查询的表项,其中有一个属性“子类别”,但子类对象也有一个属性“ParentCategory”。

我希望能够填充物两级下来,但是似乎$扩大查询将只在桌子上的直接性工作被查询。

有没有办法得到我想要的东西?最终,我想要做的是当我显示所有项目的列表时,在表格中显示子类别和父类别。现在,我只能看到该子类别,因为该子类别的父属性为空。

我想也许添加ParentCategoryId和ParentCategory对象的数据对象的定义,但是这似乎不正确的,因为我会的,而不是让它通过子类别属性链接到手动维护诚信,...

任何想法?

回答

2

这听起来像你需要做一个递归查询,这与通用表表达式处理。我会这样做的方式是在SQL中创建一个包含每个项目的ParentCategory和SubCategory的视图。然后,我的搜索可以轻松地定位到ParentCategory或SubCategory。

您可以检查出分层查询这里的一篇文章:https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL

虽然技术文件的Oracle DB,你还可以了解如何SQL服务器(和SQL Azure的)这个位置处理:https://msdn.microsoft.com/en-us/library/ms186243.aspx

然后你会写你的表控制器来访问视图。

+0

没关系啊,这听起来有希望的,但如果我理解你正确,你是说,对于这个观点,我要建,我不能与湛蓝的移动服务客户端做,必须建立一个自定义的API调用来获取我需要的结果。那会是一个正确的假设吗? – SelAromDotNet

+0

不,您可以使用常规的表格控制器。在你的数据库上下文中,你应该连接到视图而不是表格。以下是一篇介绍它的文章:https://visualstudiomagazine.com/blogs/tool-tracker/2015/02/leverage-views-in-entity-framework.aspx –