Part 55 - Repository Pattern - 2 - Adding Domain Layer in Asp.Net MVC
In this tutorial, You will learn about how to add Domain Layer under repository pattern implementation in Asp.net MVC . In previous tutorial we learned about how to add Business Layer . Lets again look at below layers and get idea about what is the use of them.
1. Web Layer is your MVC web Project
2. Business Layer consist the CRUD operation, gets data from Data Access Layer, Manipulate them and finally returns data to the Controller ( Web Layer)
3. Domain Layer consist the Domain Models or Classes that hold the data coming from Data Access Layer. Both Web and Business Layer can use domain models to exchange data.
4. Data Access Layer consist the generic repository methods (generic CRUD operation), Unit of Work( Database Context) and NON Generic repository( User defined repository).
#How to create Domain Layer?
Please follow below Steps
Step 1 : Right Click on your solution and click on Add, then click on New Project. If you notice that, this step is similar to our previous tutorial for adding Business Layer . Isn't it.
Step 2 : After opening the popup, select class Library option and give a meaningful name
Step 1 : Right Click on your solution and click on Add, then click on New Project. If you notice that, this step is similar to our previous tutorial for adding Business Layer . Isn't it.
Step 2 : After opening the popup, select class Library option and give a meaningful name
Step 3 : Add a class( EmployeeDomainModel.cs) into your Domain Layer
Step 4 : In previous tutorial(How to add Business Layer) if you do remember, we added interface and concrete class into our Business Layer. Do you? If not then create Business Layer and do below things..
"Add an Interface Folder into your business layer then create IEmployeBusiness interface and finally add a method into this example: GetEmployeeName(). After adding interface, add a concrete class EmpolyeeBusiness which will implement the IEmployeeBusiness Methods. Please see below screenshot. Copy below code in your interface and class."
Now in this tutorial, we are gonna add one more method(GetAllEmployee()) in our Business layer's interface and class.
Copy below content in your EmployeeDomainLayer Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVCTutorial.Domain
{
public class EmployeeDomainModel
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string DepartmentName { get; set; }
}
}
Step 4 : In previous tutorial(How to add Business Layer) if you do remember, we added interface and concrete class into our Business Layer. Do you? If not then create Business Layer and do below things..
"Add an Interface Folder into your business layer then create IEmployeBusiness interface and finally add a method into this example: GetEmployeeName(). After adding interface, add a concrete class EmpolyeeBusiness which will implement the IEmployeeBusiness Methods. Please see below screenshot. Copy below code in your interface and class."
Now in this tutorial, we are gonna add one more method(GetAllEmployee()) in our Business layer's interface and class.
A. IEmployeeBusiness( Interface)
using MVCTutorial.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVCTutorial.Business.Interface
{
public interface IEmployeeBusiness
{
string GetEmployeeName(int EmpId);
List<EmployeeDomainModel> GetAllEmployee();
}
}
B. Employeebusiness ( Concrete class)
using MVCTutorial.Business.Interface;
using MVCTutorial.Domain;
using MVCTutorial.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVCTutorial.Business
{
public class EmployeeBusiness : IEmployeeBusiness
{
public string GetEmployeeName(int EmpId)
{
return "Ashish" + EmpId;
}
public List<EmployeeDomainModel> GetAllEmployee()
{
List<EmployeeDomainModel> list = new List<EmployeeDomainModel>();
list.Add(new EmployeeDomainModel { Name = "Ashish", EmployeeId = 1 });
list.Add(new EmployeeDomainModel { Name = "Rob", EmployeeId = 2 });
list.Add(new EmployeeDomainModel { Name = "Sara", EmployeeId = 3 });
list.Add(new EmployeeDomainModel { Name = "Jack", EmployeeId = 4 });
list.Add(new EmployeeDomainModel { Name = "Peter", EmployeeId = 5 });
return list;
}
}
}
Step 5 : Go to your Web Layer and add the reference of Domain Layer (check the MVCTutorial.Domain checkbox ). I hope you already added the reference of Business Layer. Forget about MVCTutorial.Repository, we will cover that in next tutorial.
Step 6 : Create an instance of EmployeeBusiness Class in your controller, then access GetEmployeeName() method and you are done. Here you will notice that, we are creating an instance of EmployeeBusiness, then calling GetAllEmployee() method and finally storing data into EmployeeDomainModel list (see listDomain). I have stored this list of data into ViewBag.EmployeeList. Further, I can use it anywhere in my View
#Controller Code(RepoController.cs) : Copy the controller code below.
using MVCTutorial.Business;
using MVCTutorial.Business.Interface;
using MVCTutorial.Domain;
using MVCTutorial.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVCTutorial.Controllers
{
public class RepoController : Controller
{
public ActionResult Index()
{
IEmployeeBusiness _empBusiness = new EmployeeBusiness();
ViewBag.EmpName = _empBusiness.GetEmployeeName(254);
List<EmployeeDomainModel> listDomain = _empBusiness.GetAllEmployee();
//List<EmployeeViewModel> listemployeeVM = new List<EmployeeViewModel>();
//AutoMapper.Mapper.Map(listDomain, listemployeeVM);
ViewBag.EmployeeList = listDomain;
return View();
}
}
}
Note: In above code, I have commented the line where I have used Automapper. If you want to learn how the Automapper helps in object to object mapping then you can visit here (How to use Automapper in MVC)
What NEXT=>( Dependency Injection In Asp.net MVC )
Please Like, Share and subscribe our Channel. Have a great day.
0 Response to "Part 55 - Repository Pattern - 2 - Adding Domain Layer in Asp.Net MVC"
Post a Comment