public void QueryAllCustomersWithOrders() { var q = context.CreateQuery <IQDSP.Customer>("Customers").Expand("Orders"); int totalCustomerCount = q.Count(); int totalOrdersCount = context.CreateQuery <IQDSP.Order>("Orders").Count(); var qor = q.Execute() as QueryOperationResponse <IQDSP.Customer>; DataServiceQueryContinuation <IQDSP.Customer> nextCustLink = null; int custCount = 0; int orderCount = 0; do { ICollection previousOrderCollection = null; foreach (var c in qor) { try { if (previousOrderCollection != null) { qor.GetContinuation(previousOrderCollection); Assert.Fail("Out of scope collection did not throw"); } } catch (ArgumentException) { } var nextOrderLink = qor.GetContinuation(c.Orders); while (nextOrderLink != null) { if (custCount % 2 == 0) { var innerQOR = context.Execute <IQDSP.Order>(nextOrderLink) as QueryOperationResponse <IQDSP.Order>; foreach (var innerOrder in innerQOR) { context.AttachLink(c, "Orders", innerOrder); c.Orders.Add(innerOrder); } nextOrderLink = innerQOR.GetContinuation(); } else { nextOrderLink = context.LoadProperty(c, "Orders", nextOrderLink).GetContinuation(); } } previousOrderCollection = c.Orders; orderCount += c.Orders.Count; custCount++; } nextCustLink = qor.GetContinuation(); if (nextCustLink != null) { qor = context.Execute <IQDSP.Customer>(nextCustLink) as QueryOperationResponse <IQDSP.Customer>; } } while (nextCustLink != null); Assert.AreEqual(totalCustomerCount, custCount); Assert.AreEqual(totalOrdersCount, orderCount); Assert.AreEqual(totalOrdersCount, context.Links.Count); Assert.AreEqual(totalCustomerCount + totalOrdersCount, context.Entities.Count); }