What’s New in ASP.NET Core 10 – Key Features & Expert Insights
We tracked the evolution of .NET 9 on Reddit, and watched the heated debates on .NET 6 vs .NET 8. And just when we thought that things had finally settled, Microsoft drops another...
Listening is fun too.
Straighten your back and cherish with coffee - PLAY !
Summarize this article with:

The Repository pattern is the most popular pattern for creating an enterprise level application. The repository is used to create an abstraction layer between the data access layer and the business logic layer of an application.Implementation of repository patterns can help to abstract your application from changes in the data store and can facilitate automated unit testing.
Repository directly communicates with Database (Data Access Layer (DAL)) andfetch the data and provide it to the logical layer (Business logic layer (BAL)). The purpose of the Repository is to isolate the data access layer (DAL) and the Business Logic Layer (BAL). Instead of writing entire data access logic in a controller write this logic in a different class known as a repository. This will make your code maintainable and understandable.
If an application doesn't follow the repository pattern then an application has the following problems:
Using the Repository pattern has the following advantages:
The main purpose of the repository pattern is to isolate the data access layer and business logic.In Asp.Net MVC model is used to interact with the Data Access layer and Controller for performing Data access operation. The controller is responsible for passing data to the view. If the controller has tightly coupled to mode then any model changes directly impact on the controller and also on View.
The following diagram gives an overview of the repository pattern:
1.1-Process Flow Diagram
Step 1: Create web application
Open Visual Studio
Create new project
Provide name and Location and Click on next.
Select the Basic template (MVC) and Click on ok.
Step 2: Create a table
Open Microsoft SQL server management studio.
Select the Database and Create a table.
1.2 student table
Step 3: Connect with the database with (Db First Approach).
Open solution explorer and Add new Data Model.
Connect with the database and add a table.
1.3 Establish Connection for SQL server.
Step 4: Create a Repository for Employee
Create Repository folder inside the project
IStudentRepository.cs
usingSystem.Collections.Generic;
namespaceRepository.Models
{
publicinterfaceIStudentRepository
{
IEnumerableGetStudents();
student GetStudentById(ints_id);
voidInsertStudent(student s);
voidUpdateStudent(student s);
voidDeleteStudent(ints_id);
voidsave();
}
}
StudentRepository.cs
StudentRepositoryimplementsIStudentRepository
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
namespaceRepository.Models
{
publicclassStudentRepository :IStudentRepository
{
private demoEntities2 _context;
publicStudentRepository(demoEntities2 context)
{
this._context = context;
}
publicIEnumerableGetStudents()
{
return _context.students.ToList();
}
public student GetStudentById(ints_id)
{
return _context.students.Find(s_id);
}
publicvoidInsertStudent(student s)
{
_context.students.Add(s);
}
publicvoidUpdateStudent(student s)
{
_context.Entry(s).State = System.Data.Entity.EntityState.Modified;
}
publicvoidDeleteStudent(ints_id)
{
student s = _context.students.Find(s_id);
_context.students.Remove(s);
}
publicvoidsave()
{
_context.SaveChanges();
}
publicvoidDispose()
{
thrownewNotImplementedException()
}
}
}
Step 5: Call Repository from Controller.
Add new controller
Controller Interact with StudentRepository by creating Reference of IStudentRepository
StudentController.cs
usingDemo.Models;
usingSystem.Linq;
usingSystem.Web.Mvc;
namespaceDemo.Controllers
{
publicclassStudentController : Controller
{
// GET: Student
privateIStudentRepositoryinterfaceobj;
publicStudentController()
{
this.interfaceobj = newStudentRepository(new demoEntities2());
}
// GET: Student
publicActionResultIndex()
{
var data = from m ininterfaceobj.GetStudents() select m;
return View(data);
}
publicActionResultDetailStudent(int id)
{
student s = interfaceobj.GetStudentById(id);
return View(s);
}
publicActionResultCreateStudent()
{
returnView();
}
[HttpPost]
publicActionResultCreateStudent(student s)
{
interfaceobj.InsertStudent(s);
interfaceobj.save();
returnRedirectToAction("Index");
}
publicActionResultUpdateStudent(int id)
{
student s = interfaceobj.GetStudentById(id);
return View(s);
}
[HttpPost]
publicActionResultUpdateStudent(int id, student s)
{
interfaceobj.UpdateStudent(s);
interfaceobj.save();
returnRedirectToAction("Index");
}
publicActionResultDeleteStudent(int id)
{
student s = interfaceobj.GetStudentById(id);
return View(s);
}
[HttpPost]
publicActionResultDeleteStudent(int id, student s)
{
interfaceobj.DeleteStudent(id);
interfaceobj.save();
returnRedirectToAction("Index");
}
}
}
Step 5: Add View.
Add View for Index, CreateStudent, DetailStudent, DeleteStudent
Index.cs
@model IEnumerable@{ ViewBag.Title = "Index"; } Index
@Html.ActionLink("Create New", "CreateStudent")
@foreach (var item in Model) { }
@Html.DisplayNameFor(model => model.s_id) @Html.DisplayNameFor(model => model.s_name) @Html.DisplayNameFor(model => model.s_lastname) @Html.DisplayNameFor(model => model.s_bday) @Html.DisplayFor(modelItem => item.s_id) @Html.DisplayFor(modelItem => item.s_name) @Html.DisplayFor(modelItem => item.s_lastname) @Html.DisplayFor(modelItem => item.s_bday) @Html.ActionLink("Edit", "UpdateStudent", new { id=item.s_id }) | @Html.ActionLink("Details", "DetailStudent", new { id=item.s_id }) | @Html.ActionLink("Delete", "DeleteStudent", new { id=item.s_id })
@model Demo.Models.student
@{
ViewBag.Title = "CreateStudent";
}CreateStudent
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
student
@Html.LabelFor(model =>model.s_name, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model =>model.s_name, new { htmlAttributes = new { @class = "form-control" } })
@Html.LabelFor(model =>model.s_lastname, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model =>model.s_lastname, new { htmlAttributes = new { @class = "form-control" } })
@Html.LabelFor(model =>model.s_bday, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model =>model.s_bday, new { htmlAttributes = new { @class = "form-control" } })
}
@Html.ActionLink("Back to List", "Index")
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
note:
Asp.net MVC provide Template [List, add, edit, delete] for View. For adding View Right Click on the method and Add View. Select Template and add Model class.
In RouteConfig.cs file change the name of controller [Home->Student]
Step 7: Build and Run Project
Build and Run the application.
We tracked the evolution of .NET 9 on Reddit, and watched the heated debates on .NET 6 vs .NET 8. And just when we thought that things had finally settled, Microsoft drops another...
Today, we’re thrilled to present you with the first glimpse of .NET 9 release and let you know what features and updates you can anticipate in this new version. Various professionals believe that it’s the right time to explore and adopt the latest version of .NET for your upcoming projects. It is even recommended for projects built using .NET 6 or .NET 8, due to the framework updates made in this version.
Several experts, particularly those just starting out, often find themselves confused about WPF and UWP, wondering if they are the same. Since they are used to create great UIs for...