我已经能够在我的C#API for Azure Mobile Services中使用Expand属性来扩展子对象,并且它运行良好。
但是,该子对象还有一个子对象,我想在获取顶级项目时能够使用它。
也就是说,我正在查询表项,它有一个属性“SubCategory”,但该子类别对象也有一个属性“ParentCategory”。
我希望能够将对象填充两个级别,但似乎$ expand查询只适用于要查询的表的直接属性。
有没有办法得到我想要的东西?最终我想要做的是当我显示所有项目的列表时,在表格中显示子类别和父类别。现在,我只能看到子类别,因为该子类别的父属性为null。
我想可能会将ParentCategoryId和ParentCategory对象添加到DataObject定义中,但这似乎不正确,因为我必须手动维护该完整性,而不是让它通过子类别属性进行链接...
有什么想法吗?
答案 0 :(得分:2)
听起来你需要做一个递归查询,这是用Common Table Expressions处理的。我这样做的方法是在SQL中创建一个View,它包含每个项目的ParentCategory和SubCategory。然后我的搜索可以轻松地定位ParentCategory或SubCategory。
您可以在此处查看有关分层查询的文章:https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL
虽然为Oracle DB记录了该技术,但您还可以在此处阅读SQL Server(和SQL Azure)如何处理此问题:https://msdn.microsoft.com/en-us/library/ms186243.aspx
然后你会编写你的表控制器来访问View。