Data Katmanımızda Generic Repository oluşturma yapacağız daha önceki konumuzda Generic İnterface oluşturmuştuk. şimdi bu Interfaces kullanarak Repository Classımızı oluştururalım
public class Repository<T> : IDataAccess<T> where T :class
{
private DatebaseContext db;
private DbSet<T> _objectSet;
public Repository()
{
db = RepositoryBase.CreateContext();
_objectSet = db.Set<T>();
}
public int Insert(T obj)
{
_objectSet.Add(obj);
return Save();
}
public List<T> List()
{
return _objectSet.ToList();
}
public IQueryable<T> List(Expression<Func<T, bool>> where)
{
return _objectSet.Where(where);
}
public T GetById(int Id)
{
return _objectSet.Find(Id);
}
public T GetByUserPassword(Expression<Func<T, bool>> where)
{
return _objectSet.FirstOrDefault(where);
}
public int Update(T obj)
{
return Save();
}
public int Delete(T obj)
{
_objectSet.Remove(obj);
return Save();
}
public int Save()
{
return db.SaveChanges();
}
public T Find(Expression<Func<T, bool>> where)
{
return _objectSet.FirstOrDefault(where);
}
}
Public class RepositoryBase
{
private static DatebaseContext _db;
private static object _lock=new object();
protected RepositoryBase()
{
}
public static DatebaseContext CreateContext()
{
if (_db==null)
{
lock (_lock)
{
if (_db==null)
{
_db=new DatebaseContext();
}
}
}
return _db;
}
}