public jsResponse <EmployeesCollection, Employees> Employees_LoadHierarchical() { jsResponse <EmployeesCollection, Employees> response = new jsResponse <EmployeesCollection, Employees>(); try { // The Main Query EmployeesQuery q = new EmployeesQuery("e"); q.Select(q.EmployeeID, q.FirstName, q.LastName, q.City, q.Country, q.HomePhone, q.Region, q.PostalCode, q.Title); q.Where(q.EmployeeID < 7); // The OrdersCollection OrdersQuery o1 = q.Prefetch <OrdersQuery>(Employees.Prefetch_OrdersCollectionByEmployeeID); EmployeesQuery emp1 = o1.GetQuery <EmployeesQuery>(); o1.Where(emp1.EmployeeID < 7); // The OrdersDetailsCollection OrderDetailsQuery od = q.Prefetch <OrderDetailsQuery>(Employees.Prefetch_OrdersCollectionByEmployeeID, Orders.Prefetch_OrderDetailsCollectionByOrderID); EmployeesQuery emp2 = od.GetQuery <EmployeesQuery>(); OrdersQuery o2 = od.GetQuery <OrdersQuery>(); od.Where(emp2.EmployeeID < 7); // Load It EmployeesCollection coll = new EmployeesCollection(); if (coll.Load(q)) { response.collection = coll; response.columnCollection["Employees"] = jsColumn.PopulateColumns(coll[0]); response.columnCollection["Orders"] = jsColumn.PopulateColumns(coll[0].OrdersCollectionByEmployeeID[0]); response.columnCollection["OrderDetails"] = jsColumn.PopulateColumns(coll[0].OrdersCollectionByEmployeeID[0].OrderDetailsCollectionByOrderID[0]); } } catch (Exception ex) { response.exception = ex.Message; } return(response); }