Venciity

TwitterRepository

May 17th, 2015
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.15 KB | None | 0 0
  1. namespace Twitter.Data.Repositories
  2. {
  3.     using System;
  4.     using System.Data.Entity;
  5.     using System.Linq;
  6.     using System.Linq.Expressions;
  7.  
  8.     public class TwitterRepository<T> : ITwitterRepository<T> where T : class
  9.     {
  10.         private DbContext context;
  11.         private IDbSet<T> set;
  12.  
  13.         public TwitterRepository(DbContext context)
  14.         {
  15.             this.context = context;
  16.             this.set = context.Set<T>();
  17.         }
  18.  
  19.         public IQueryable<T> All()
  20.         {
  21.             return this.set;
  22.         }
  23.  
  24.         public T Find(object id)
  25.         {
  26.             return this.set.Find(id);
  27.         }
  28.  
  29.         public IQueryable<T> Search(Expression<Func<T, bool>> predicate)
  30.         {
  31.             return this.set.Where(predicate);
  32.         }
  33.  
  34.         public T Add(T entity)
  35.         {
  36.             this.ChangeState(entity, EntityState.Added);
  37.             return entity;
  38.         }
  39.  
  40.         public void Update(T entity)
  41.         {
  42.             this.ChangeState(entity, EntityState.Modified);
  43.         }
  44.  
  45.         public void Update(object id)
  46.         {
  47.             var entity = this.Find(id);
  48.             this.ChangeState(entity, EntityState.Modified);
  49.         }
  50.  
  51.         public T Delete(object Id)
  52.         {
  53.             var entity = this.Find(Id);
  54.             this.ChangeState(entity, EntityState.Deleted);
  55.             return entity;
  56.         }
  57.  
  58.         public T Delete(T entity)
  59.         {
  60.             this.ChangeState(entity, EntityState.Deleted);
  61.             return entity;
  62.         }
  63.  
  64.         public void Detach(T entity)
  65.         {
  66.             this.ChangeState(entity, EntityState.Detached);
  67.         }
  68.  
  69.         public void Attach(T entity)
  70.         {
  71.             this.set.Attach(entity);
  72.         }
  73.  
  74.         public int SaveChanges()
  75.         {
  76.             return this.context.SaveChanges();
  77.         }
  78.  
  79.         private void ChangeState(T entity, EntityState state)
  80.         {
  81.             var entry = this.context.Entry(entity);
  82.             if (entry.State == EntityState.Detached)
  83.             {
  84.                 this.set.Attach(entity);
  85.             }
  86.  
  87.             entry.State = state;
  88.         }
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment