Share via


Consuming OData Based Rest Service in C#

Nowadays comunication between applications is an active topic with daily usage and a large amount of pratical appliances. While developing an app in witch I had to consume an OData I found out that combining Linq with my code made this operation pretty easy.

The algorithm to consume OData starts with adding a service reference to Visual Studio:

http://rpmachado.files.wordpress.com/2012/08/image_thumb1.png?w=587&h=393

After adding the service reference in which you define the uri to the service, we start building our code.

In your code the algorithm is the following:

  1. Define the Uri to your OData Service
  2. Define the context of your odata, which contains all entities exposed by the service.
  3. Query the context using Linq
  4. Print the result

Easy and simple.

Example code

 

public static void Main(string[] args){

        Uri serviceUri= new Uri("http://example.host.odataservice.net/service.svc", UriKind.Absolute);
        ODataService.ServiceEntities context = new ODataService.ServiceEntities (serviceUri);

        context.Credentials = new System.Net.NetworkCredential(Username,Password);

         var query = from ServiceObject in context.YourEntity
                     select ServiceObject ;

        foreach (var myObject in query)
        {
            Console.WriteLine("\n Field1: {0} | Field2: {1}",
            myObject .Field1, myObject .Field2);

        }
}

 

That’s it.

Thank you,

Rui Machado

rpmachado.wordpress.com