Итак, вот что я нашел:
Во-первых, службы данных WCF не поддерживают отложенную загрузку proof .Это означает, что этот код никогда не будет работать:
var workOrder = context.WorkOrders.First();
string siteId = workOrder.Unit.Building.Site.Id.ToString(); // won't work w/ WCF Data Services
Тогда я подумал, что мог бы использовать объединение, как показано ниже, однако Службы данных WCF не поддерживают объединения proof :
var query =
from wo in context.WorkOrders
join unit in context.Units on wo.Id equals unit.Id
join building in context.Buildings on unit.Id equals building.Id
join site in context.Sites on building.Id equals site.Id
where wo.Id == workOrderId
select new
{
SiteId = site.Id,
};
Наконец, после просмотра спецификации oData расширения расширение oData я смог обнаружить, что мое первоначальное использование Expand было ЗАКРЫТО с тем, что я хотел, это работает :
int workOrderId = 1;
var workOrder = context.WorkOrders.Expand("Unit/Building/Site").Where(w => w.Id == workOrderId).First();
string siteId = workOrder.Unit.Building.Site.Id.ToString(); // shows site id