WCF Data Service

Expand and Load: Fetching related entities in WCF Data Service

Objective

In this post, I will show you how to retrieve data from related entities in WCF Data Service.

If you are new to this topic, please read Introduction to WCF Data service and ODATA before going through below article

Let us say, we want to fetch details from related entities Customers and Order.

clip_image001

There are two ways to fetch data from both related entities.

1. Expand

2. LoadProperty

Using LoadProperty

Program.cs

  NorthwindEntities context = new NorthwindEntities(new Uri("http://localhost:61091/WcfDataService1.svc/"));
                try
                {
                    foreach (Order o in context.Orders)
                    {
                        context.LoadProperty(o, "Customer");
                        Console.WriteLine("Customer : {0}- Order Id: {1}", o.Customer.ContactName, o.OrderID);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.Read();
            }

In above code clip_image003 So in above code load property is being used to load data from related entities. Output clip_image005 Using Expand Program.cs

 DataServiceQuery<Order> query =
                context.Orders.Expand("Order_Details,Customer");
            try
            {
                foreach (Order order in query.Take(4))
                {
                    Console.WriteLine("Customer: {0}", order.Customer.ContactName);
                    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)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();

So in above code

clip_image007

In above code Orders relation is expanded to Order_detail and Customer.

clip_image009

In above code retrieving top 4th record and iterating through the records to display.

Output

clip_image011

About Dhananjay Kumar

Dhananjay Kumar is Developer, Blogger , Speaker, Learner , Mindcracker & Microsoft MVP.

Discussion

2 Responses to “Expand and Load: Fetching related entities in WCF Data Service”

  1. How would that work with a many to many entity sets.

    AssetEntity : AssetId,Name
    AssetTagJoin : AssetId,TagId
    TagEntity: TagId,TagName

    I tried cxt.Asset.Expand(“AssetTagJoin”) – works
    cxt.Asset.Expand(“AssetTagJoin”).Expand(“TagEntity”) — does not work.
    cxt.Asset.Expand(“AssetTagJoin,TagEntity”) — does not work.

    thank you.
    Mike Apken

    I’m using WCF DataServices, EF

    Posted by Mike Apken | August 22, 2010, 6:45 pm
  2. Hi ,

    You can use the query as
    DataServiceQuery query = context.AssetEntity.Expand(“AssetTagJoin,Tagentity”);

    I hope above should work

    Posted by Dhananjay Kumar | August 22, 2010, 6:55 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 1,225 other followers

Tweets

Categories

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my current or previous employer's view in anyway. © Copyright 2012