Server side paging in WCF Data Service

Objective

In this article, I will show you, how we can achieve server side paging in WCF Data service?

Note: IF you are new to WCF Data Service, please read my other articles on WCF Data Service.

PPT on WCF Data Service

Introduction to WCF Data Service

Here, I am assuming that, you have basic understanding of WCF Data service. So I will start with the code in .svc file or service file.

WcfDataService.svc.cs

clip_image002

If we see in above code, we are setting the access rule for all the entity in the model to allow only the read operation.

How to enable paging at server side?

To enable paging at server side, we need to set the page the entity page size and also we need to explicitly set the version of the protocol to V2.

clip_image004

clip_image006

We are telling here that return only one record for all the entities .

WcfDataService.svc.cs

using System;

using System.Collections.Generic;

using System.Data.Services;

using System.Data.Services.Common;

using System.Linq;

using System.ServiceModel.Web;

using System.Web;

namespace PagingSample

{

public class WcfDataService1 : DataService<StudentDBEntities >

{

public static void InitializeService(DataServiceConfiguration config)

{

config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);

config.SetEntitySetPageSize("*", 1);

config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;

}

}

}

Now when, we run the service, we can see

clip_image008

When, we navigate to Students table, we get the above result.

clip_image010

If , we notice above result , we can see , a link that will be used to navigate to next records.

clip_image012

How to fetch paged data at client side?

If we fetch the data at the client side in normal way as below,

clip_image014

Output, you will get name of only first student, because page size at server side is set to 1 .

clip_image016

So, if we want to get all the record through paging, we need to use Continuation property of DataServiceCollection.

clip_image018

So, above code will load the DataServiceCollection with all the data from the service. And then we can use normal foreach statement to print all the records

Programs.cs



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.Services.Client;

using ConsoleApplication1.ServiceReference1;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

StudentDBEntities ent = new StudentDBEntities(new Uri("http://localhost:11518/WcfDataService1.svc/"));

DataServiceCollection<Student> students = new DataServiceCollection<Student>(ent.Students);

while (students.Continuation != null)

{

students.Load(ent.Execute<Student>(students.Continuation));

}

foreach (var r in students)

{

Console.WriteLine(r.Name);

}

Console.Read();

}

}

}

When you run output would be as below,

clip_image020

So, this was all about how to enable server side paging in WCF Data Service. Thanks for reading. I hope article was useful. Happy Coding.

3 responses to “Server side paging in WCF Data Service”

  1. Can we see an example of how to deploy WCF Data Services to a shared hosting site. Not just using the localhost? This would be of great help.

    Thank you.

  2. Yes, I would really like to see how to host a WCF Data Service on a web server as well.

    Thanks for all the great videos.
    Sam

  3. Yes, I also would like to know the way to host the WCF data service.

    Thanks for all your efforts.

    -Vivek

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 )

Facebook photo

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

Connecting to %s

Create a website or blog at WordPress.com