1. Go with the existing database
file EmployeeDB.mdf under App_data folder of application.
2. Use the available script
EmployeeDB.sql available under App_data folder of application to create above
database.
3. Finally, follow bellow
mentioned steps to create a new database from / within the environment:
·
Select App_data folder Choose New From File -> New -> File
option , or Right Click the App_data to add new database file.
·
Create a Database with name EmployeeDB
·
Create a Table ERoles, following is the script for this :
/*******************************************
*This script creates
****** database EmployeeDB
****** Table Roles
********************************************/
IF EXISTS (SELECT name FROM
sys.databases WHERE name = N'EmployeeDB')
DROP DATABASE [EmployeeDB]
Go
CREATE DATABASE [EmployeeDB]
GO
USE [EmployeeDB]
GO
IF EXISTS (SELECT * FROM
sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Roles]') AND type in
(N'U'))
DROP TABLE [dbo].[Roles]
GO
/********************************************************************
******This script is a part of
ASP.NET MVC-A Step Ahead Series
****** Written by : Gaurav
Arora
****** Anyone can use this for
educational purposes.
**********************************************************************/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Roles](
[Id] [int] IDENTITY(1,1)
NOT NULL,
[Role] [nvarchar](300)
COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[IsRetiree] [bit] NOT
NULL,
[HireDate] [datetime] NOT
NULL,
CONSTRAINT [PK_Roles] PRIMARY
KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON
[PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
Fill some initial values into
new created table:
USE [EmployeeDB]
GO
INSERT INTO
[dbo].[Roles]([Role],[IsRetiree],[HireDate])
VALUES('Manager -
Resource',0,'01/01/2005')
GO
INSERT INTO
[dbo].[Roles]([Role],[IsRetiree],[HireDate])
VALUES('Manager -
Technical',0,'01/11/1999')
GO
INSERT INTO
[dbo].[Roles]([Role],[IsRetiree],[HireDate])
VALUES('Member - Technical
Staff',0,'01/11/2007')
GO
INSERT INTO
[dbo].[Roles]([Role],[IsRetiree],[HireDate])
VALUES('Sr. Member - Technical
Staff',0,'11/11/2007')
GO
INSERT INTO
[dbo].[Roles]([Role],[IsRetiree],[HireDate])
VALUES('Lead Member - Technical
Staff',1,'11/11/1986')
GO
Finally, we have a database
with a tablecreated.
To define a Model, there are
many tools to generate this task like:
·
LINQ To SQL
·
nHibernate
·
Entity Framework
With the invention of LINQ,
it’s very easy to solve the some querying problems in applications. I prefer to
use LINQ to SQL, although above three are likely to be same but I preferred to
use LINQ to SQL.
To begin,
Right click on Models folder
and select Add New Item -> LINQ To SQL -> EmpRole.dbml
Now, just pick and drop your
object of Container i.e. ERoles table on Method Pane.
Alternatively, you can create
a new class from tool box by defining all the elements.
Finally, click on ‘Save’ when
done.
Many authors say that the
next step should be adding the logics but my opinion is you should have at-least
one interface to interact user then may go for logics.
So, lets start to create a
UI:
Creation of Views
·
Right Click on Home folder under Views folder to add new
Views.
·
Select Add -> View Create.aspx, Home.aspx these are the two
views we need here.
·
Now Double click on Index.aspx and put following lines there:
First include namespace:
<%@ Import Namespace="MVCApplicationStepAhead.Models" %>
Now, rewrite the above with
following code:
<!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>Employee Roles</title>
</head>
<body>
<div>
<h1>
Employee
Roles</h1>
<ul>
<%foreach (RoleE roleE in (IEnumerable)ViewData.Model)
{%>
<li>
<%if (roleE.IsRetiree)
{ %>
<font color="red">
<%= roleE.HireDate.ToShortDateString()
%>
--
<%= roleE.Role1%>
</font>
<%}
else
{ %>
<a href="/Home/Complete/<%=roleE.Id.ToString() %>" >Change Role as Retiree</a>
<%= roleE.HireDate.ToShortDateString()
%>
--
<%= roleE.Role1 %>
<% } %>
</li>
<% } %>
</ul>
<br /><br
/>
<a href="/Home/Create">Add New Task</a>
</div>
</body>
</html>
The above piece of code –
just defining the activities of getting Available roles of Employee, adding new
roles with Employee, changing Employee current roles.
In Create.aspx page, we pull
some new roles, use following code:
<%@ Page Language="C#"
AutoEventWireup="true" CodeBehind="Create.aspx.cs" Inherits="MVCApplicationStepAhead.Views.Home.Create"
%>
<!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 runat="server">
<title></title>
</head>
<body>
<div>
<h1>
Add New
Role</h1>
<form method="post"
action="/Home/CreateNew">
<label for="role">
Role: </label>
<input type="text"
name="role" />
<br />
<input type="submit" value="Add Task" />
</form>
</div>
</body>
</html>
As you can see, here we are
using post method.
Creation of Controllers
Click on Controllers folder
and add new MVC controller, named as HomeController.cs
Put the following lines
there:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using MVCApplicationStepAhead.Models;
namespace MVCApplicationStepAhead.Controllers
{
public class HomeController : Controller
{
private EmpRoleDataContext dbEmpRole = new EmpRoleDataContext();
//Display a list of Roles
public ActionResult Index()
{
var roles = from r
in dbEmpRole.RoleEs orderby r.HireDate descending select
r;
//return View();
return View(roles.ToList());
}
//New Role form
public ActionResult Create()
{
return View();
}
//Adding new Roles
public ActionResult CreateNew(string roleDescription)
{
//New role to database
RoleE newRole = new RoleE();
newRole.Role1 =
roleDescription;
newRole.IsRetiree =
false;
newRole.HireDate=DateTime.Now;
dbEmpRole.RoleEs.InsertOnSubmit(newRole);
return RedirectToAction("Index");
}
//Mark that Role has been Completed
public ActionResult Complete(int Id)
{
//database tasks here
var roles = from r
in dbEmpRole.RoleEs where r.Id == Id select r;
foreach (RoleE
match in roles)
match.IsRetiree
= true;
dbEmpRole.SubmitChanges();
return RedirectToAction("Index");
}
}
}
|