2015-10-15 4 views
0

Я смог использовать атрибут Expand в моем C# API для Azure Mobile Services для расширения дочернего объекта, и он отлично работает.Expand Query Azure Mobile Services для детей детей

Однако этот дочерний объект также имеет дочерний объект, который я хочу использовать при получении элемента верхнего уровня.

То есть, я запрашиваю таблицу. Элементы, которые имеют свойство «SubCategory», но этот объект подкатегории также имеет свойство «ParentCategory».

Я хочу, чтобы можно было заполнить объекты на два уровня вниз, но кажется, что запрос $ expand будет работать только на прямые свойства запрашиваемой таблицы.

Есть ли способ получить то, что я хочу? В конечном итоге то, что я хочу сделать, - это когда я показываю список всех элементов, показывая как подкатегорию, так и родительскую категорию в таблице. Прямо сейчас, я могу видеть только подкатегорию, поскольку родительское свойство этой подкатегории равно null.

Я думал, что, возможно, добавив ParentCategoryId и ParentCategory объектов к определениям DataObject, но это кажется неправильным, так как я должен был бы утверждать, что целостность вручную, вместо того, чтобы позволить ему связать через подкатегорию собственность ...

Любой идеи?

ответ

2

Похоже, вам нужно сделать рекурсивный запрос, который обрабатывается с помощью общих табличных выражений. То, как я это сделаю, - создать представление в SQL, которое имеет ParentCategory и SubCategory для каждого элемента. Тогда мой поиск может легко настроить ParentCategory или SubCategory.

Вы можете проверить статью на иерархических запросов здесь: https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL

Хотя методика описана для БД Oracle, вы можете прочитать, как SQL Server (и SQL Azure) обрабатывает это здесь: https://msdn.microsoft.com/en-us/library/ms186243.aspx

Затем вы будете писать свой контроллер таблицы для доступа к представлению.

+0

ah okay это звучит многообещающе, но если я правильно вас понимаю, вы говорите, что для этого представления я пытаюсь построить, я не могу сделать это с помощью лазурного клиента мобильной связи и должен создать собственный вызов api, чтобы получить результаты мне нужны. было бы правильным предположением? – SelAromDotNet

+0

Нет, вы можете использовать обычный контроллер таблиц. В контексте вашего db вы должны подключиться к представлению, а не к таблице. Вот статья, которая проходит через нее: https://visualstudiomagazine.com/blogs/tool-tracker/2015/02/leverage-views-in-entity-framework.aspx –

 Смежные вопросы

  • Нет связанных вопросов^_^