This article explains the basic use of a WCF Service and how to use LINQ in an ASP.Net application.
Getting Started:
Creating a ASP.NET Application:
- Open Visual Studio 2010.
- Go to File => New => Project
- Select Web in installed templates
- Select ASP.NET Web Application
- Enter the Name and choose the location.
Click OK.
And now using mouse right click Add New Linq to SQL Classes from installed Data template.
Image 1.
Now drag and drop data table using server explorer.
Note - You can rename table name also using double click.
Image 2.
After adding tables as you can see in web.config there is a connection string that has been added automatically.
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
Now add a new WCF service using Add New Item.
Image 3.
Service1.svc
public void DoWork()
{
}
//This function gets all active events
public IEnumerable<Events> GetLatestEvents()
{
DataClasses1DataContext _context = new DataClasses1DataContext();
var dateTime = DateTime.Now.ToString();
var events = (from r in _context.Jobs
orderby r.InsertedDate descending
select new Events
{
Title = r.Job_Title,
Description = r.Job_Desc,
City = r.Job_City,
State = r.Job_State,
Country = r.Job_Country,
StartingOn = DateTime.Parse(r.Date_Sent),
ExpiringOn = DateTime.Parse(r.Date_Expires)
});
return events.AsEnumerable();
}
IService1.cs
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoWork();
[OperationContract]
IEnumerable<Events> GetLatestEvents();
}
[DataContract]
public class Events
{
string title;
string description;
string category;
string city;
string state;
string country;
DateTime startingOn;
DateTime expiringOn;
[DataMember]
public string Title { get { return title; } set { title = value; } }
[DataMember]
public string Description { get { return description; } set { description = value; } }
[DataMember]
public string Category { get { return category; } set { category = value; } }
[DataMember]
public string City { get { return city; } set { city = value; } }
[DataMember]
public string State { get { return state; } set { state = value; } }
[DataMember]
public string Country { get { return country; } set { country = value; } }
[DataMember]
public DateTime StartingOn { get { return startingOn; } set { startingOn = value; } }
[DataMember]
public DateTime ExpiringOn { get { return expiringOn; } set { expiringOn = value; } }
}
Now add a service reference to the application.
Image 4.
After adding a service refrence to the application, a service model is added in web.config which has all service details and properties.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="200000000" maxBufferPoolSize="200000000" maxReceivedMessageSize="200000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="200000" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:31533/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
name="BasicHttpBinding_IService1" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Now start work on the page. Drag and drop a GridView data control onto the page.
Default.aspx
<div>
<asp:GridView ID="GridView1" runat="server" BackColor="LightGoldenrodYellow" Width="500px"
AutoGenerateColumns="False"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
GridLines="None">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<SortedAscendingCellStyle BackColor="#FAFAE7" />
<SortedAscendingHeaderStyle BackColor="#DAC09E" />
<SortedDescendingCellStyle BackColor="#E1DB9C" />
<SortedDescendingHeaderStyle BackColor="#C2A47B" />
<Columns>
<asp:HyperLinkField DataTextField="Title" HeaderText="Title" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="State" HeaderText="State" />
<asp:BoundField DataField="Country" HeaderText="Country" />
<asp:BoundField DataField="StartingOn" HeaderText="StartingOn"/>
<asp:BoundField DataField="ExpiringOn" HeaderText="ExpiringOn"/>
</Columns>
</asp:GridView>
</div>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WCFLINQSample.ServiceReference1;
namespace WCFLINQSample
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Service1Client serviceClient = new Service1Client();
GridView1.DataSource = serviceClient.GetLatestEvents();
GridView1.DataBind();
}
}
}
Now time to run the application to see the result.
Image 5.