How to: Load Related Entities (WCF Data Services)
When you need to load associated entities in WCF Data Services, you can use the LoadProperty method on the DataServiceContext class. You can also use the Expand method on the DataServiceQuery<TElement> to require that related entities be eagerly loaded in the same query response.
The example in this topic uses the Northwind sample data service and autogenerated client data service classes. This service and the client data classes are created when you complete the WCF Data Services quickstart.
Example
The following example shows how to explicitly load the Customer that is related to each returned Orders instance.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Try
' Enumerate over the top 10 orders obtained from the context.
For Each order As Order In context.Orders.Take(10)
' Explicitly load the customer for each order.
context.LoadProperty(order, "Customer")
' Write out customer and order information.
Console.WriteLine("Customer: {0} - Order ID: {1}", _
order.Customer.CompanyName, order.OrderID)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
try
{
// Enumerate over the top 10 orders obtained from the context.
foreach (Order order in context.Orders.Take(10))
{
// Explicitly load the customer for each order.
context.LoadProperty(order, "Customer");
// Write out customer and order information.
Console.WriteLine("Customer: {0} - Order ID: {1}",
order.Customer.CompanyName, order.OrderID);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
The following example shows how to use the Expand method to return Order Details that belong to the Orders returned by the query.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Define a query for orders that also returns items and customers.
Dim query As DataServiceQuery(Of Order) = _
context.Orders.Expand("Order_Details,Customer")
Try
' Enumerate over the first 10 results of the query.
For Each order As Order In query.Take(10)
Console.WriteLine("Customer: {0}", order.Customer.CompanyName)
Console.WriteLine("Order ID: {0}", order.OrderID)
For Each item As Order_Detail In order.Order_Details
Console.WriteLine(vbTab & "Product: {0} - Quantity: {1}", _
item.ProductID, item.Quantity)
Next
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Define a query for orders that also returns items and customers.
DataServiceQuery<Order> query =
context.Orders.Expand("Order_Details,Customer");
try
{
// Enumerate over the first 10 results of the query.
foreach (Order order in query.Take(10))
{
Console.WriteLine("Customer: {0}", order.Customer.CompanyName);
Console.WriteLine("Order ID: {0}", order.OrderID);
foreach (Order_Detail item in order.Order_Details)
{
Console.WriteLine("\tProduct: {0} - Quantity: {1}",
item.ProductID, item.Quantity);
}
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}