Я пытаюсь запросить один объект в базе данных с помощью DataServiceQuery.Сущность, которую я пытаюсь загрузить, имеет отношение к графу других сущностей, которые я также хочу загрузить.MSDN описывает здесь и здесь , что я могу загрузить свои упомянутые объекты, используя либо DataServiceQuery .Expand, либо DataServiceContext.LoadProperty.
Это прекрасно работает для отношений первой степенимоей сущности, но у меня проблема с загрузкой отношений отношений.
Очевидно, что я мог бы вызвать LoadProperty для всех отношений второй степени и перебрать все коллекции второй степени, но я надеялся, что смогу загрузить всю связьграфик в одном запросе.Это возможно?
Редактировать
На самом деле загрузка отношений второй степени не так уж очевидна.Следующий код завершается ошибкой (модель домена изменена для ясности):
var context = DataServiceReference.DataServiceContextFactory.Create();
var customer = (from c in context.Customers.Expand("Orders")
where c.CustomerId.Equals(customerId)
select c).First();
foreach (var order in customer.Orders)
{
context.LoadProperty(order, "Products");
В последней строке выше выбрасывается InvalidOperationException: «Контекст в настоящее время не отслеживает сущность».Я использую самоконтроль сущностей.Может ли эта ошибка быть связана с STE?
Как я могу каким-либо образом загрузить отношения второй степени?
Редактирование решения
Оказывается, DataServiceQuery .Expand использует другой синтаксис пути по сравнению с ObjectQuery .Include.Первый использует косую черту в качестве разделителя пути, последний использует точку.Может кто-нибудь объяснить, почему синтаксис является несовместимым и где я могу найти документацию о синтаксисе пути Expand?