Question Arises: What is Entity Data
Model Framework?
In Simple Terms: "It's a Conceptual Data Model which will be acting as a
bridge between Database and .NET Framework. It clearly depicts the ORM (Object
Relational Mapping) from the perspective of Database logics easily".
Question Arises: How Entity Data Model Framework differs from LINQ to SQL
Classes?
| S.No | EDM Framework | LINQ to SQL Classes |
| 1 | It Supports different kinds of databases. | It supports on SQL Server. |
| 2 | From the perspective of development effort, it is fast enough. | Slow than EDM Framework from perspective of development effort. |
| 3 | Maps multiple tables at a time. | Maps only single table at a time. |
| 4 | Bit Complex for New Users. | Simple and user friendly. |
| 5 | Supports Database Change Synchronization. | Does not Supports Exactly. |
| 6 | Maps Tables, Stored Procs, Reporting Stuff and so on. | Maps Tables only. |
So, I think we all are now good to go and
implement this highly useful concept.
Let's get ready to start it off.
Firstly, I have created a database in SQL Server 2008.

Now, we are eager to fire off Visual Studio 2010.
Let's Create Some Web Application Project in Version .NET 4.0.
So, let's add a new Item to the Project.
So go data Tab and Click on ADO.NET Entity Data Model.
Where the Complete Screen looks like this.

Click next,
where The Screen looks like this, now click on generate from database and click
next.

Next The
Screen looks like this where you need to pass on database name and One Main Important thing here to remember
is DataContextObject Name. The Data Context Name here is: Candidate Entities.
So, the
Complete Screen looks like this:

After
Clicking Next, Select the table which you want to perform the operation. So the
Screen here looks like this:

And Finally
Click Finish, Which will create an ADO.NET-EDM Framework for you
Now, let's
get Started with Actual Fun.
So Let's
Create a New Web Form.
Now, let's perform an insert operation to database. So The
Complete Code of WebForm1.aspx looks like this:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="EDM_Application.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<style type
="text/css">
.div
{
font-family:Cambria;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="div">
<center>
<table>
<tr>
<td>
</td>
<td>
<asp:Label ID="Label5" runat="server" Text="Vijay's EDM
Framework CRUD Operation" Font-Bold="true"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Please Enter
FirstName" ForeColor="Brown" Font-Italic="true" Font-Bold="true"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="Please Enter
LastName" Font-Italic="true" ForeColor="Brown" Font-Bold="true"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Please Enter
Age" Font-Italic="true" ForeColor="Brown" Font-Bold="true"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="Button1" runat="server" Text="Insert Values
Here"
onclick="Button1_Click" />
</td>
</tr>
</table>
<table>
<tr>
<td>
</td>
<td>
<asp:Label ID="Label4" runat="server" Visible="true" ForeColor="Brown"></asp:Label>
</td>
</tr>
</table>
</center>
</div>
</form>
</body>
</html>
The Complete Code of WebForm1.aspx.cs looks like this:
using System;
using System.Collections.Generic;
using
System.Linq;
using System.Web;
using
System.Web.UI;
using System.Web.UI.WebControls;
Namespace
EDM_Application
{
public partial class WebForm1 : System.Web.UI.Page
{
protected
void Page_Load(object sender, EventArgs e)
{
TextBox1.Focus();
}
protected
void Insert()
{
var
objEntities = new CandidateEntities();
try
{
if(TextBox1.Text==""||
TextBox2.Text==""||TextBox3.Text=="")
{
Label4.Text = "<b>Please Enter Some Values";
Label4.Visible = true;
}
else
{
var objPerson = new Person();
objPerson.FirstName = TextBox1.Text;
objPerson.LastName = TextBox2.Text;
objPerson.Age = Convert.ToInt32(TextBox3.Text);
objEntities.AddToPerson(objPerson);
objEntities.SaveChanges();
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
Response.Redirect("~/WebForm2.aspx");
}
}
catch (Exception
exception)
{
exception.Message.ToString();
}
}
protected
void Button1_Click(object sender, EventArgs e)
{
Insert();
}
}
}
Now, after
user is inserted values, let's create a new web form again where the page needs
to be redirected after insertion. So, here we are going to perform deletion,
retrieval and modification operations.
So
the Complete Code of WebForm2.aspx looks like this:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="EDM_Application.WebForm2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<style type="text/css">
.div
{
font-family:
Cambria;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="div">
<center>
<asp:GridView ID="GridView1" runat="server" BackColor="LightGoldenrodYellow" AutoGenerateColumns="False"
AllowSorting="True" DataKeyNames="Id"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
GridLines="None" onpageindexchanging="GridView1_PageIndexChanging"
onrowdeleting="GridView1_RowDeleting" >
<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:BoundField HeaderText="Id" DataField="Id" SortExpression="Id" ReadOnly="true" />
<asp:TemplateField HeaderText="FirstName">
<ItemTemplate>
<%#Eval("FirstName")
%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("FirstName")
%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="LastName">
<ItemTemplate>
<%#Eval("LastName")
%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("LastName")
%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Age">
<ItemTemplate>
<%#Eval("Age")
%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Text='<%#Eval("Age")
%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<span onclick="return
confirm('Are you Sure Want to Delete Data ')">
<asp:LinkButton ID="LinkButton3" runat="server" Text="Delete" CommandName="Delete"></asp:LinkButton>
</span>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<table>
<tr>
<td></td>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">
Click Here to Insert Data </asp:LinkButton>
</td>
</tr>
</table>
<br />
<br />
<h1>Modify
Data Here</h1>
<table>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Please Enter
Id"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="Please Enter
FirstName"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Please Enter
LastName"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label4" runat="server" Text="Please Enter
Age"></asp:Label>
</td>
<td>
<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="Button1" runat="server" Text="Click Here to
Modify" onclick="Button1_Click" Width="119px" />
</td>
</tr>
</table><br />
<table>
<tr>
<td>
</td>
<td>
<asp:Label ID="Label5" runat="server" Visible="false" ForeColor="Red" Font-Bold="true" Font-Size="Large">
</asp:Label>
</td>
</tr>
</table>
</center>
</div>
</form>
</body>
</html>
The Complete Code of WebForm2.aspx.cs looks like this:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
namespace
EDM_Application
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object
sender, EventArgs e)
{
if (!IsPostBack)
{
Select();
}
}
protected void Select()
{
var objEntities = new
CandidateEntities();
var query = from
r in objEntities.Person
select r;
GridView1.DataSource = query; GridView1.DataBind();
}
protected void LinkButton1_Click(object
sender, EventArgs e)
{
Response.Redirect("~/WebForm1.aspx");
}
protected void GridView1_PageIndexChanging(object
sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
Select();
}
protected void GridView1_RowDeleting(object
sender, GridViewDeleteEventArgs e)
{
try
{
var objEntities = new
CandidateEntities();
var Id1 = GridView1.DataKeys[e.RowIndex].Value;
var id = Convert.ToInt32(Id1);
var query = objEntities.Person.Where(a => a.Id
== id);
if (query.Count() > 0)
{
foreach (Person person
in query)
{
objEntities.DeleteObject(person);
} objEntities.SaveChanges();
} Select();
Label5.Text = ("Records Deleted Successfully");
Label5.Visible = true;
}
catch (ArgumentOutOfRangeException
exception)
{
exception.Message.ToString();
}
}
protected void Button1_Click(object
sender, EventArgs e)
{
try
{
if (TextBox4.Text ==
"" || TextBox5.Text ==
"" || TextBox6.Text ==
"" || TextBox7.Text ==
"")
{
Label5.Text =
("Please Enter Some Values");
Label5.Visible = true;
}
else
{
var objEntities = new
CandidateEntities();
var id1 = Convert.ToInt32(TextBox4.Text);
var person = objEntities.Person.Where(a => a.Id
== id1).FirstOrDefault();
person.FirstName = TextBox5.Text;
person.LastName = TextBox6.Text;
person.Age = Convert.ToInt32(TextBox7.Text);
objEntities.SaveChanges();
Select();
TextBox4.Text = "";
TextBox5.Text = "";
TextBox6.Text = "";
TextBox7.Text = "";
Label5.Text = ("Records Updated Successfully");
Label5.Visible = true;
}
}
catch (Exception
ex)
{
ex.Message.ToString();
}
}
}
} The Output of the WebForm1.aspx Application looks like this:

The Insertion Operation of the Application looks like this:

The Output of the WebForm2.aspx Application looks like this:

The Output of Data Modification for the Application looks like
this:

The Output of Data Update Application looks like this:

The Output of Data Deletion Application looks like this:

The Output of Data Deleted Application looks like this:

I
hope this article is useful for your. I look forward for your comments and
feedback. Thanks Vijay Prativadi...