.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> WCF >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Server side paging in WCF Data Service

Posted By:Dhananjay Kumar       Posted Date: June 25, 2010    Points: 25    Category: WCF    URL: http://www.dotnetspark.com  

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

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



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.





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
    {
       
        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



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



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



How to fetch paged data at client side?

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



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



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



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 students = new DataServiceCollection(ent.Students);



            while (students.Continuation != null)
            {
                students.Load(ent.Execute(students.Continuation));
            }

            foreach (var r in students)
            {
                Console.WriteLine(r.Name);
            }
            Console.Read();
        }
    }
}

When you run output would be as below,



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
.

 Subscribe to Articles

     

Further Readings:

Responses

No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend