DataServiceContext.LoadProperty Method (Object, String, Uri)

Loads a page of related entities by using the supplied next link URI.

Not supported by the WCF Data Services 5.0 client for Silverlight.

Namespace:  System.Data.Services.Client
Assembly:  Microsoft.Data.Services.Client (in Microsoft.Data.Services.Client.dll)

Syntax

'Declaration
Public Function LoadProperty ( _
    entity As Object, _
    propertyName As String, _
    nextLinkUri As Uri _
) As QueryOperationResponse
'Usage
Dim instance As DataServiceContext 
Dim entity As Object 
Dim propertyName As String 
Dim nextLinkUri As Uri 
Dim returnValue As QueryOperationResponse 

returnValue = instance.LoadProperty(entity, _
    propertyName, nextLinkUri)
public QueryOperationResponse LoadProperty(
    Object entity,
    string propertyName,
    Uri nextLinkUri
)
public:
QueryOperationResponse^ LoadProperty(
    Object^ entity, 
    String^ propertyName, 
    Uri^ nextLinkUri
)
member LoadProperty : 
        entity:Object * 
        propertyName:string * 
        nextLinkUri:Uri -> QueryOperationResponse
public function LoadProperty(
    entity : Object, 
    propertyName : String, 
    nextLinkUri : Uri
) : QueryOperationResponse

Parameters

  • entity
    Type: System.Object
    The entity that contains the property to load.
  • propertyName
    Type: System.String
    The name of the property of the specified entity to load.
  • nextLinkUri
    Type: System.Uri
    The URI that is used to load the next results page.

Return Value

Type: System.Data.Services.Client.QueryOperationResponse
An instance of QueryOperationResponse<T> that contains the results of the request.

Exceptions

Exception Condition
InvalidOperationException

When entity is in a Detached or Added state.

Remarks

When entity is in an Unchanged or Modified state, the related entities are loaded in the Unchanged state, and the links between the entities are also created in an Unchanged state.

When entity is in a Deleted state, the related entities are loaded in the Unchanged state, and the links between the entities are created in the Deleted state.

Examples

This example returns related Orders entities with each Customers entity and uses a do?while loop to load Customers entities pages and a nested while loop to load pages of related Orders entities from the data service. The LoadProperty method is used to load pages of related Orders entities.

' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Dim nextLink As DataServiceQueryContinuation(Of Customer) = Nothing
Dim pageCount = 0
Dim innerPageCount = 0

Try
    ' Execute the query for all customers and related orders,
    ' and get the response object.
    Dim response = _
    CType(context.Customers.AddQueryOption("$expand", "Orders") _
            .Execute(), QueryOperationResponse(Of Customer))

    ' With a paged response from the service, use a do...while loop 
    ' to enumerate the results before getting the next link.
    Do
        ' Write the page number.
        Console.WriteLine("Customers Page {0}:", ++pageCount)

        ' If nextLink is not null, then there is a new page to load.
        If nextLink IsNot Nothing Then
            ' Load the new page from the next link URI.
            response = CType(context.Execute(Of Customer)(nextLink),  _
                    QueryOperationResponse(Of Customer))
        End If

        ' Enumerate the customers in the response.
        For Each c As Customer In response
            Console.WriteLine(vbTab & "Customer Name: {0}", c.CompanyName)
            Console.WriteLine(vbTab & "Orders Page {0}:", innerPageCount + 1)

            ' Get the next link for the collection of related Orders.
            Dim nextOrdersLink As DataServiceQueryContinuation(Of Order) = _
            response.GetContinuation(c.Orders)

            While nextOrdersLink IsNot Nothing
                For Each o As Order In c.Orders
                    ' Print out the orders.
                    Console.WriteLine(vbTab & vbTab & "OrderID: {0} - Freight: ${1}", _
                            o.OrderID, o.Freight)
                Next
                ' Load the next page of Orders.
                Dim ordersResponse = _
                context.LoadProperty(c, "Orders", nextOrdersLink)
                nextOrdersLink = ordersResponse.GetContinuation()
            End While
        Next
        ' Get the next link, and continue while there is a next link.
        nextLink = response.GetContinuation()
    Loop While nextLink IsNot Nothing
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);
DataServiceQueryContinuation<Customer> nextLink = null;
int pageCount = 0;
int innerPageCount = 0;

try
{
    // Execute the query for all customers and related orders,
    // and get the response object.
    var response =
        context.Customers.AddQueryOption("$expand", "Orders")
        .Execute() as QueryOperationResponse<Customer>;

    // With a paged response from the service, use a do...while loop 
    // to enumerate the results before getting the next link.
    do
    {
        // Write the page number.
        Console.WriteLine("Customers Page {0}:", ++pageCount);

        // If nextLink is not null, then there is a new page to load.
        if (nextLink != null)
        {
            // Load the new page from the next link URI.
            response = context.Execute<Customer>(nextLink)
                as QueryOperationResponse<Customer>;
        }

        // Enumerate the customers in the response.
        foreach (Customer c in response)
        {
            Console.WriteLine("\tCustomer Name: {0}", c.CompanyName);
            Console.WriteLine("\tOrders Page {0}:", ++innerPageCount);
            // Get the next link for the collection of related Orders.
            DataServiceQueryContinuation<Order> nextOrdersLink = 
                response.GetContinuation(c.Orders);

            while (nextOrdersLink != null)
            {
                foreach (Order o in c.Orders)
                {
                    // Print out the orders.
                    Console.WriteLine("\t\tOrderID: {0} - Freight: ${1}",
                        o.OrderID, o.Freight);
                }

                // Load the next page of Orders.
                var ordersResponse = context.LoadProperty(c, "Orders", nextOrdersLink);
                nextOrdersLink = ordersResponse.GetContinuation();
            }
        }
    }

    // Get the next link, and continue while there is a next link.
    while ((nextLink = response.GetContinuation()) != null);
}
catch (DataServiceQueryException ex)
{
    throw new ApplicationException(
        "An error occurred during query execution.", ex);
}

See Also

Reference

DataServiceContext Class

LoadProperty Overload

System.Data.Services.Client Namespace

Other Resources

How to: Load Paged Results (WCF Data Services)

Loading Deferred Content (WCF Data Services)