Tuesday, August 28, 2018

Part 60 - Add Edit Record using Repository Pattern - CRUD




In this tutorial, You will learn about how to perform CRUD operation(Create & Update) over generic repository 

So far, we were creating several Layers but now we will see how the actual repository get setup so that we can use its predefined methods without doing any change into this. In other words, making repository more generic. 

Lets have a quick review of all layers that we created in previous tutorial.

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).





Step 1: Please watch Part 58 (Setup generic repository) before moving to step 2Step 2 : Add EmployeeRepository class into your Repository Layer (MVCTutorial.Repository) and use below code 

A.  EmployeeRepository .cs 

using MVCTutorial.Repository.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVCTutorial.Repository
{
    public class EmployeeRepository:BaseRepository<Employee>
    {
        public EmployeeRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { }

    }
}




Step 2 : In EmployeeBusiness.cs (MVCTutorial.Business layer) class use below code 

B.  EmployeeBusiness.cs 

using MVCTutorial.Business.Interface;
using MVCTutorial.Domain;
using MVCTutorial.Repository;
using MVCTutorial.Repository.Infrastructure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVCTutorial.Business
{
    public class EmployeeBusiness : IEmployeeBusiness
    {
        private readonly IUnitOfWork unitOfWork;
        private readonly EmployeeRepository empRepository;

        public EmployeeBusiness(IUnitOfWork _unitOfWork)
        {

            unitOfWork = _unitOfWork;
            empRepository = new EmployeeRepository(unitOfWork);
        }
             

        #region

      
        public string AddUpdateEmployee(EmployeeDomainModel empModel)
        {

            string result = "";
            if (empModel.EmployeeId > 0)
            {

                Employee emp = empRepository.SingleOrDefault(x => x.EmployeeId == empModel.EmployeeId);

                if (emp != null)
                {
                    emp.Name = empModel.Name;
                    emp.DepartmentId = empModel.DepartmentId;
                    emp.Address = empModel.Address;

                    empRepository.Update(emp);

                    result = "updated";

                }
            }
            else
            {
                Employee emp = new Employee();

                emp.Name = empModel.Name;
                emp.DepartmentId = empModel.DepartmentId;
                emp.Address = empModel.Address;
                emp.IsDeleted = false;

                var record = empRepository.Insert(emp);

                result = "Inserted";
            }

            return result;
        }

        #endregion

    }
}


Step 4 : Call this method from your controller with appropriate data. 
Step 5 : You are done

What Next => Nothing...You have learned a lot. Are not you?

Please Like, Share and subscribe our Channel. Have a great day.


All Code Factory



1 comment:

TechnoTips said...

How can i save relation table using this unit of work