Introduction
WCF is more popular now a days and for beginners, I will show you a practical example of a WCF service for inserting, deleting and displaying data using ASP.NET.
Basically, this tip will demonstrate with example the following:
- Step by step procedure/example to create WCF service
- How to consume/access WCF service
- How to Use Proxy class
- How to get data from WCF
- How to bind/Load/Fill gridview from SQL Server database using WCF service
- How to perform insert, edit, update and delete operation on gridview using WCF service
Using the Code
For inserting data into a database using a WCF service in ASP.NET, we have to do the following steps:
- Create a WCF service
- Create a Web based application
Part 1: Create a WCF Service
Open Visual Studio 2010/2012.
Step 1: Open Visual Studio -> Go to File menu -> New -> Project --> Select the new Empty Solution and give name WCFProject
.
Step 2: Then add new Class Library Project and give name SaleClassLibrary
.
Step 3: Then add reference of System.ServiceModel
and System.Runtime.Serialization
into that project.
Step 4: Then add new Interface ISaleService
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
[ServiceContract]
interface ISaleService
{
[OperationContract]
bool InsertCustomer(Customer obj);
[OperationContract]
List<Customer> GetAllCustomer();
[OperationContract]
bool DeleteCustomer(int Cid);
[OperationContract]
bool UpdateCustomer(Customer obj);
}
[DataContract]
public class Customer
{
[DataMember]
public int CustomerID;
[DataMember]
public string CustomerName;
[DataMember]
public string Address;
[DataMember]
public string EmailId;
}
Step 5: And write the following code in the SaleService.cs file:
SaleService.cs page:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public class SaleService : ISaleService
{
public bool InsertCustomer(Customer obj)
{
cutomerList.Add(obj);
return true;
}
public List<Customer> GetAllCustomer()
{
return cutomerList;
}
public bool DeleteCustomer(int Cid)
{
var item = cutomerList.First(x => x.CustomerID == Cid);
cutomerList.Remove(item);
return true;
}
public bool UpdateCustomer(Customer obj)
{
var list = cutomerList;
cutomerList.Where(p => p.CustomerID ==
obj.CustomerID).Update(p => p.CustomerName = obj.CustomerName);
return true;
}
public static List<Customer> cutomerList = new List<Customer>()
{
new Customer {CustomerID = 1, CustomerName="Sujeet",
Address="Pune", EmailId="test@yahoo.com" },
new Customer {CustomerID = 2, CustomerName="Rahul",
Address="Pune", EmailId="test@yahoo.com" },
new Customer {CustomerID = 3, CustomerName="Mayur",
Address="Pune", EmailId="test@yahoo.com"}
};
}
public static class LinqUpdates
{
public static void Update<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (var item in source)
action(item);
}
}
Step 6: Build your Class library.
Step 7: Add New Empty ASP.NET Project into that Solution, give name SaleServiceHost
.
Step 8: Add reference of Classlibrary
Project to that SaleServiceHost
ASP.NET project.
Step 9: Add new item WCF Service in that SaleServiceHost
ASP.NET project and give name SaleService
.
Step 10: Right click on that SaleService.svc and select view Markup:
Change the Service Name from that markup:
<%@ ServiceHost Language="C#" Debug="true"
Service="SaleClassLibrary.SaleService" %>
Step 11: And build the solution and SaleServiceHost
set as startup project and SaleService.svc set as startup page.
In this way, your WCF service builds successfully.
Part 2: Create a Web Based Application (Client)
Now, create your client application in your system:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<h2>
Welcome to Sale Service</h2><table class="style1">
<tr>
<td style="text-align: right">
Enter name</td>
<td>
<asp:TextBox ID="TextBox1"
runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
Address</td>
<td>
<asp:TextBox ID="TextBox2"
runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
Email ID</td>
<td>
<asp:TextBox ID="TextBox3"
runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style2">
</td>
<td>
<asp:Button ID="Button1" runat="server"
onclick="Button1_Click" Text="Save" />
</td>
</tr>
</table>
<p>
<asp:GridView ID="GridView1" runat="server"
AllowPaging="True" DataKeyNames="CustomerID,CustomerName"
AllowSorting="True" AutoGenerateDeleteButton="True"
onrowdeleting="GridView1_RowDeleting">
</asp:GridView>
</p>
<p>
<asp:Label ID="Label1" runat="server"
Text="Label"></asp:Label>
</form>
</body>
</html>
using SaleService;
- Create a Website.
- Add Service Reference http://localhost:53544/SaleService.svc?wsdl to a Web Application.
- Select your Website.
- Right click on it, add Service Reference, then enter your Service URL and click Go.
- Give the name for your service
SaleService
-> OK. - Then automatically a proxy will be created in your client system.
- Write the following code in your source code:
- Add your service reference on the top.
- Then create an object for Service Reference and use that object to call the methods from your service.
- Write the following code in your aspx.cs file.
Default.aspx.cs page:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using ServiceReference1;
public partial class _Default : System.Web.UI.Page
{
SaleService.SaleServiceClient proxy;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
proxy=new SaleService.SaleServiceClient();
GridView1.DataSource=proxy.GetAllCustomer();
GridView1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
proxy = new SaleService.SaleServiceClient();
SaleService.Customer objcust =
new SaleService.Customer() { CustomerID=5, CustomerName=TextBox1.Text,
Address=TextBox2.Text,EmailId=TextBox3.Text };
proxy.InsertCustomer(objcust);
GridView1.DataSource = proxy.GetAllCustomer();
GridView1.DataBind();
Label1.Text = "Record Saved Successfully";
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int userid = Convert.ToInt32(GridView1.DataKeys
[e.RowIndex].Values["CustomerID"].ToString());
proxy = new SaleService.SaleServiceClient();
bool check = proxy.DeleteCustomer(userid);
Label1.Text = "Record Deleted Successfully";
GridView1.DataSource = proxy.GetAllCustomer();
GridView1.DataBind();
}
}
By using this, you have successfully inserted data in the database and you have also shown this in the gridview.
Please take a look at the attached code for more information.
Happy programming!!
Don’t forget to leave your feedback and comments below!