Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2013
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.29 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6.  
  7. using Pocos.Context;
  8.  
  9. using Repository.Interfaces;
  10.  
  11. namespace Repository
  12. {
  13.    public class BaseRepository<TEntity> : IBaseRepository<TEntity> where TEntity : class
  14.    {
  15.  
  16.       internal IDbContext _ctx;
  17.       internal IDbSet<TEntity> _dbSet;
  18.  
  19.       public BaseRepository(IDbContext freeWorldContext)
  20.       {
  21.          _ctx = freeWorldContext;
  22.          _dbSet = _ctx.Set<TEntity>();
  23.       }
  24.  
  25.       public virtual TEntity Create(TEntity entity)
  26.       {
  27.          var addedEntity = _dbSet.Add(entity);
  28.  
  29.          return addedEntity;
  30.       }
  31.  
  32.       public virtual void Update(TEntity entity)
  33.       {
  34.          _dbSet.Attach(entity);
  35.       }
  36.  
  37.       public virtual void Delete(TEntity entity)
  38.       {
  39.          _dbSet.Remove(entity);
  40.       }
  41.  
  42.       public virtual IQueryable<TEntity> Get(Expression<Func<TEntity, bool>> predicate)
  43.       {
  44.          return _dbSet.Where(predicate);
  45.       }
  46.  
  47.       public virtual IQueryable<TEntity> GetAll()
  48.       {
  49.          return _dbSet;
  50.       }
  51.  
  52.       public virtual RepositoryQuery<TEntity> Query()
  53.       {
  54.          var repositoryGetFluentHelper =
  55.              new RepositoryQuery<TEntity>(this);
  56.  
  57.          return repositoryGetFluentHelper;
  58.       }
  59.  
  60.       internal IQueryable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
  61.                                        Func<IQueryable<TEntity>,
  62.                                        IOrderedQueryable<TEntity>> orderBy = null,
  63.                                        List<Expression<Func<TEntity, object>>>
  64.                                        includeProperties = null,
  65.                                        int? page = null, int? pageSize = null)
  66.       {
  67.          IQueryable<TEntity> query = DbSet;
  68.  
  69.          if(includeProperties != null)
  70.          {
  71.             includeProperties.ForEach(i => { query = query.Include(i); });
  72.          }
  73.  
  74.          if(filter != null)
  75.          {
  76.             query = query.Where(filter);
  77.          }
  78.  
  79.          if(orderBy != null)
  80.          {
  81.             query = orderBy(query);
  82.          }
  83.  
  84.          if(page != null && pageSize != null)
  85.          {
  86.             query = query.Skip((page.Value - 1) * pageSize.Value)
  87.                          .Take(pageSize.Value);
  88.          }
  89.  
  90.          return query;
  91.       }
  92.    }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement