python ruby-programming-language Smalltalk Vue.js Knockoutjs TypeScript JavaScript, OOPs JavaScript Angular 8,7,6,5,4 and 2 Interview Questions and Answers Angular 8,7,6,5,4 and 2 Interview Questions and Answers Angular 4 Angular 2 AngularJs 1.x NodeJs Perl Programming R Programming RequireJs Rust Programming Backbonejs closure programming language go-programming-language kotlin-programming-language
why we use repository pattern in mvc 5

Repository Pattern in MVC 5

Repository pattern reduce the controller code complexity. We write the most of all business  logic in Repository with the help of entity frameworks classes.

Repository work like a mediator that means its work between business logic  and data access layers.



namespace PCX.Core.Repositories
{
    /// <typeparam name="C"></typeparam>
    /// <typeparam name="T"></typeparam>
    public abstract class GenericRepository<C, T> :IGenericRepository<T> where T : class  where C : DbContext, new()
    {

        private C _entities = new C();
        public C Context
        {

            get { return _entities; }
            set { _entities = value; }
        }

        public virtual IQueryable<T> GetAll()
        {

            IQueryable<T> query = _entities.Set<T>();
            return query;
        }

        public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
        {

            IQueryable<T> query = _entities.Set<T>().Where(predicate);
            return query;
        }

        public virtual void Add(T entity)
        {
            _entities.Set<T>().Add(entity);
        }

        public virtual void Delete(T entity)
        {
            _entities.Set<T>().Remove(entity);
        }

        public virtual void Edit(T entity)
        {
            _entities.Entry(entity).State = System.Data.Entity.EntityState.Modified;
        }

        public virtual void Save()
        {
            _entities.SaveChanges();
        }
    }
}


namespace PCX.Core.Repositories
{
    public interface IGenericRepository<T> where T : class
    {
        IQueryable<T> GetAll();
        IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
        void Add(T entity);
        void Delete(T entity);
        void Edit(T entity);
        void Save();
    }
}


namespace PCX.Core.Repositories
{
    public interface IEmployeeRepository
    {
        List<Employee> List(string emailId);
    }
}

namespace PCX.Core.Repositories
{
    /// <summary>
    /// Employee repository class handle all methods related to Tenant entity.
    /// </summary>
    public class EmployeeRepository : GenericRepository<PCXEntities, Employee>, IEmployeeRepository
    {

        /// <summary>
        /// Check that employee exists in database or not , If employee exists in database then return entity.
        public List<Employee> List(string emailId)
        {
            return Context.Employees.Where(em => em.EmailID == emailId).ToList();
        }
    }
}


File look like below images.



ANIL SINGH

Hi there! Welcome to my blog. My name is Anil Singh. I'm a author of this blog. For more detail about me, kindly refer to this link..
My Blogs - http://code-sample.com and http://code-sample.xyz
My Books - Interview Questions and Answers Books- Get Your Book in 15+ Digital Stores Worldwide..

You Might Also Like
www.code-sample.com/. Powered by Blogger.
ASK Questions