Saturday, November 26, 2016

Part 11 - Insert data Into database in as Asp.net MVC application


In this video, You will  find the way to insert data by submitting a form. You can submit your form either directly or by using Jquery (see example Insert data using Jquery ). Direct submission results in loading complete page.  Now a days, every website using a popup to insert/ update/delete record as its easier to save multiple record without navigating to different page. Bootstrap has provided an attractive popup or modal which is pretty cool and easy to use ( see example Create popup with bootstrap )
Note: Before copying below code, I recommend you to watch above video completely.  

#Controller Code

Add a controller named "Test" and replace everything with below code. In below code, you will find two methods
a) Index () : This method will return department list which will be shown in dropdownlist.
b) SaveRecord(EmployeeViewModel model): This method will insert employee record in Employee table and return to index page after loading department list into ViewBag.

using MVCTutorial.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVCTutorial.Controllers
{
    public class TestController : Controller
    {
        public ActionResult Index()
        {

            MVCTutorialEntities db = new MVCTutorialEntities();
            List<Department> list = db.Departments.ToList();
            ViewBag.DepartmentList = new SelectList(list, "DepartmentId", "DepartmentName");
            return View();

        }

        [HttpPost]

        public ActionResult SaveRecord(EmployeeViewModel model)
        {
            try
            {
                MVCTutorialEntities db = new MVCTutorialEntities();

                List<Department> list = db.Departments.ToList();

                ViewBag.DepartmentList = new SelectList(list, "DepartmentId", "DepartmentName");

                Employee emp = new Employee();
                emp.Address = model.Address;
                emp.Name = model.Name;
                emp.DepartmentId = model.DepartmentId;
                db.Employees.Add(emp);
                db.SaveChanges();
                int latestEmpId = emp.EmployeeId;
                return RedirectToAction("Index");
            }

            catch (Exception ex)
            {
                throw ex;

            }
        }
    }
}
   
  
#Model code (EmployeeViewModel)

Right click on your model folder and add a class. Give name"EmployeeViewModeland click ok button. Replace content with below code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class EmployeeViewModel
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }
    public Nullable<int> DepartmentId { get; set; }
    public string Address { get; set; }
    //Custom attribute

    public string DepartmentName { get; set; }
    public bool Remember { get; set; }

}


 # View Page (Index.cshtml)

Right click on your controller' s Index method and add a view. After adding view, replace content with below code. Here you can see that how the department list is loaded into dropdown

@model MVCTutorial.Models.EmployeeViewModel
@{

    ViewBag.Title = "Index";

    Layout = null;

}
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<div class="container" style="width:40%;margin-top:2%">

    @using (Html.BeginForm("SaveRecord", "Test", FormMethod.Post))
    {
        @Html.DropDownListFor(model => model.DepartmentId, ViewBag.DepartmentList as SelectList, "--select--", new { @class = "form-control" })
        @Html.TextBoxFor(model => model.Name, new { @class = "form-control", @placeholder = "Name" })

        @Html.TextBoxFor(model => model.Address, new { @class = "form-control", @placeholder = "Address" })

        <input type="submit" value="Submit" class="btn btn-block btn-primary" />

    }

</div>

#Database Script

Add a database named "MVCTutorial" in your local db. Then execute below script.


 USE [MVCTutorial]
GO
/****** Object:  Table [dbo].[Department]    Script Date: 27-11-2016 00:28:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Department](
 [DepartmentId] [int] IDENTITY(1,1) NOT NULL,
 [DepartmentName] [nvarchar](100) NULL,
 CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED 
(
 [DepartmentId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[Employee]    Script Date: 27-11-2016 00:28:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Employee](
 [EmployeeId] [int] IDENTITY(1,1) NOT NULL,
 [Name] [varchar](50) NULL,
 [DepartmentId] [int] NULL,
 [Address] [varchar](150) NULL,
 CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED 
(
 [EmployeeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Sites]    Script Date: 27-11-2016 00:28:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Sites](
 [SiteId] [int] IDENTITY(1,1) NOT NULL,
 [EmployeeId] [int] NULL,
 [SiteName] [nvarchar](150) NULL,
 CONSTRAINT [PK_Sites] PRIMARY KEY CLUSTERED 
(
 [SiteId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[Department] ON 

GO
INSERT [dbo].[Department] ([DepartmentId], [DepartmentName]) VALUES (1, N'IT')
GO
INSERT [dbo].[Department] ([DepartmentId], [DepartmentName]) VALUES (2, N'QA')
GO
INSERT [dbo].[Department] ([DepartmentId], [DepartmentName]) VALUES (3, N'Development ')
GO
INSERT [dbo].[Department] ([DepartmentId], [DepartmentName]) VALUES (4, N'Marketing')
GO
SET IDENTITY_INSERT [dbo].[Department] OFF
GO
SET IDENTITY_INSERT [dbo].[Employee] ON 

GO
INSERT [dbo].[Employee] ([EmployeeId], [Name], [DepartmentId], [Address]) VALUES (1, N'Ashish', 1, N'India')
GO
INSERT [dbo].[Employee] ([EmployeeId], [Name], [DepartmentId], [Address]) VALUES (2, N'John', 2, N'London')
GO
INSERT [dbo].[Employee] ([EmployeeId], [Name], [DepartmentId], [Address]) VALUES (3, N'Methew', 3, N'NewYork')
GO
INSERT [dbo].[Employee] ([EmployeeId], [Name], [DepartmentId], [Address]) VALUES (4, N'Brano', 4, N'France')
GO
INSERT [dbo].[Employee] ([EmployeeId], [Name], [DepartmentId], [Address]) VALUES (5, N'Smith', 1, N'London')
GO
INSERT [dbo].[Employee] ([EmployeeId], [Name], [DepartmentId], [Address]) VALUES (6, N'Sara', 4, N'New york')
GO
SET IDENTITY_INSERT [dbo].[Employee] OFF
GO
SET IDENTITY_INSERT [dbo].[Sites] ON 

GO
INSERT [dbo].[Sites] ([SiteId], [EmployeeId], [SiteName]) VALUES (1, 1005, N'google.com')
GO
INSERT [dbo].[Sites] ([SiteId], [EmployeeId], [SiteName]) VALUES (2, 1006, N'www.technotips.com')
GO
SET IDENTITY_INSERT [dbo].[Sites] OFF
GO
ALTER TABLE [dbo].[Employee]  WITH CHECK ADD  CONSTRAINT [FK_Employee_Department] FOREIGN KEY([DepartmentId])
REFERENCES [dbo].[Department] ([DepartmentId])
GO
ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Department]
GO
ALTER TABLE [dbo].[Sites]  WITH CHECK ADD  CONSTRAINT [FK_Sites_Employee] FOREIGN KEY([EmployeeId])
REFERENCES [dbo].[Employee] ([EmployeeId])
GO
ALTER TABLE [dbo].[Sites] CHECK CONSTRAINT [FK_Sites_Employee]
GO



All Code Factory

9 comments:

Manav Pandya said...

Attach source code with example if possible

Unknown said...

can i run these examples mvc4 with vs10

Unknown said...

Hi Sir
I followed your asp.net mvc5 tutorial and all videos of your Youtobe channel.Thanks for sharing usefull information about asp.net mvc5.
If possible Attatch the pdf/documentation of mvctutorial.

Dev said...

EmployeeId 1005 and 1006 did not exist in Employee table so alter constraint in sites table will not work.

GO
INSERT [dbo].[Sites] ([SiteId], [EmployeeId], [SiteName]) VALUES (1, 1005, N'google.com')
GO
INSERT [dbo].[Sites] ([SiteId], [EmployeeId], [SiteName]) VALUES (2, 1006, N'www.technotips.com')
GO

Please update the Sql Query.

Thanks for your great tutorial.

sameer said...

cool teaching, thanks brother

Realtime Experts said...

thank you so much for this nice information Article, Digital marketing is tha good skill in grouth tha career For website creation, promotion and development contact here. For your digital marketing needs just have a look at Click Perfect.Dot Net Training in Bangalore

Basanta said...

Nice post: AReally Helpful


Unknown said...

Thank you so much!!!!!

Novel Khan said...

I want to see the "department" model