in this lab you will be doing Insert using Silverlight DataGrid and WCF Service.

Task 1: Designing Database Table:

Start a SQL Server instance and create a database of named "Company" and table "PersonMaster" using the following queries:

Create Database Company

Use Company

CREATE TABLE [dbo].[PersonMaster]( [PersonId] [int] NOT NULL, [PersonName] [varchar](50) NOT NULL, [Address] [varchar](50) NOT NULL, [City] [varchar](50) NOT NULL, [State] [varchar](50) NOT NULL, [Age] [int] NOT NULL,

CONSTRAINT [PK_PersonMaster] PRIMARY KEY CLUSTERED

(

[PersonId]

ASC

)WITH (PAD_INDEX

= OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,

ALLOW_ROW_LOCKS

= ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

Task 2: Creating WCF Service.

In this task you will create a WCF Service. This service will have methods for retrieving all Persons from the table and create a new Person.

Step 1: Open VS2010 and create a blank solution, name it "SILV4_DataGrid_DML_Lab".

Step 2: In this solution add a new WCF Service Application, name it "WCF40_DMLService".

(Note: You need to choose .NET Framework 4.0.). Rename "IService1.cs" to "IService.cs" and rename "Service1.svc" to "Service.svc".

Step 3: Open IService.cs and write the following interface and class with a DataContract in it:

using System.Runtime.Serialization; using System.ServiceModel;

namespace WCF40_DMLService

{

[ServiceContract]

public interface IService

{

[OperationContract]

PersonMaster[] GetAllPerson();

[OperationContract]

void CreatePersonRecord(PersonMaster objPer);

}

[DataContract]

public class PersonMaster

{

[DataMember]

public int PersonId { get; set; }

[DataMember]

public string PersonName { get; set; }

[DataMember]

public string Address { get; set; }

[DataMember]

public string City { get; set; }

[DataMember]

public string State { get; set; }

[DataMember]

public int Age { get; set; }

}

}

Step 4: Right-click on Service.Svc and select "View Markup" and write the following code in it:

<%@ ServiceHost Language="C#" Debug="true" Service="WCF40_DMLService.Service" CodeBehind="Service.svc.cs" %>


Step 5: Open Service.svc.cs and implement the "IService" interface in the "Service" class as below:

using System;

using System.Data;

using System.Data.SqlClient;

namespace WCF40_DMLService

{

public class Service : IService

{

SqlConnection Conn; SqlCommand Cmd;

public Service()

{

Conn = new SqlConnection("Data Source=.;Initial Catalog=Company;Integrated Security=SSPI");

}

public PersonMaster[] GetAllPerson()

{

PersonMaster[] lstPerson = null; Conn.Open();

Cmd = new SqlCommand();

Cmd.Connection = Conn;

Cmd.CommandText = "Select * from PersonMaster";

SqlDataReader Reader = Cmd.ExecuteReader();

DataTable DtPerson = new DataTable();

DtPerson.Load(Reader);

lstPerson = new PersonMaster[DtPerson.Rows.Count]; int i = 0;

foreach (DataRow rw in DtPerson.Rows)

{

lstPerson[i] = new PersonMaster();

lstPerson[i].PersonId = Convert.ToInt32(rw["PersonId"]); lstPerson[i].PersonName = rw["PersonName"].ToString(); lstPerson[i].Address = rw["Address"].ToString(); lstPerson[i].City = rw["City"].ToString(); lstPerson[i].State = rw["State"].ToString(); lstPerson[i].Age = Convert.ToInt32(rw["Age"]);

i++;

}

Conn.Close(); return lstPerson;

}

public void CreatePersonRecord(PersonMaster objPer)

{

Conn.Open();

Cmd = new SqlCommand(); Cmd.Connection = Conn;

Cmd.CommandText = "Insert into PersonMaster Values(@PersonId,@PersonName,@Address,@City,@State,@Age)";

Cmd.Parameters.AddWithValue("@PersonId", objPer.PersonId); Cmd.Parameters.AddWithValue("@PersonName", objPer.PersonName); Cmd.Parameters.AddWithValue("@Address", objPer.Address); Cmd.Parameters.AddWithValue("@City", objPer.City); Cmd.Parameters.AddWithValue("@State", objPer.State); Cmd.Parameters.AddWithValue("@Age", objPer.Age);

Cmd.ExecuteNonQuery();

Conn.Close();

}

}

}


The two methods above perform the required operations.

Step 6:
Build the service and publish it on IIS.