Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Data.Entity;
- using System.Linq;
- using System.Linq.Expressions;
- using Pocos.Context;
- using Repository.Interfaces;
- namespace Repository
- {
- public class BaseRepository<TEntity> : IBaseRepository<TEntity> where TEntity : class
- {
- internal IDbContext _ctx;
- internal IDbSet<TEntity> _dbSet;
- public BaseRepository(IDbContext freeWorldContext)
- {
- _ctx = freeWorldContext;
- _dbSet = _ctx.Set<TEntity>();
- }
- public virtual TEntity Create(TEntity entity)
- {
- var addedEntity = _dbSet.Add(entity);
- return addedEntity;
- }
- public virtual void Update(TEntity entity)
- {
- _dbSet.Attach(entity);
- }
- public virtual void Delete(TEntity entity)
- {
- _dbSet.Remove(entity);
- }
- public virtual IQueryable<TEntity> Get(Expression<Func<TEntity, bool>> predicate)
- {
- return _dbSet.Where(predicate);
- }
- public virtual IQueryable<TEntity> GetAll()
- {
- return _dbSet;
- }
- public virtual RepositoryQuery<TEntity> Query()
- {
- var repositoryGetFluentHelper =
- new RepositoryQuery<TEntity>(this);
- return repositoryGetFluentHelper;
- }
- internal IQueryable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
- Func<IQueryable<TEntity>,
- IOrderedQueryable<TEntity>> orderBy = null,
- List<Expression<Func<TEntity, object>>>
- includeProperties = null,
- int? page = null, int? pageSize = null)
- {
- IQueryable<TEntity> query = DbSet;
- if(includeProperties != null)
- {
- includeProperties.ForEach(i => { query = query.Include(i); });
- }
- if(filter != null)
- {
- query = query.Where(filter);
- }
- if(orderBy != null)
- {
- query = orderBy(query);
- }
- if(page != null && pageSize != null)
- {
- query = query.Skip((page.Value - 1) * pageSize.Value)
- .Take(pageSize.Value);
- }
- return query;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement