public interface IUnitOfWork
{
DbContext DbContext { get; }
int Save();
}
public class UnitOfWork : IUnitOfWork
{
public UnitOfWork(DbContext dbContext)
{
DbContext = dbContext;
}
public DbContext DbContext { get; }
public int Save()
{
return DbContext.SaveChanges();
}
}
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
private readonly DbContext _dbContext;
public GenericRepository(IUnitOfWork unitOfWork)
{
_dbContext = unitOfWork.DbContext;
}
public IQueryable<TEntity> GetAll()
{
IQueryable<TEntity> query = _dbContext.Set<TEntity>();
return query;
}
public IQueryable<TEntity> FindBy(Expression<Func<TEntity, bool>> predicate)
{
IQueryable<TEntity> query = _dbContext.Set<TEntity>().Where(predicate);
return query;
}
public TEntity Add(TEntity entity)
{
return _dbContext.Set<TEntity>().Add(entity);
}
public void Delete(TEntity entity)
{
_dbContext.Set<TEntity>().Remove(entity);
}
public void Update(TEntity entity)
{
_dbContext.Entry(entity).State = EntityState.Modified;
}
public void Save()
{
_dbContext.SaveChanges();
}
public IEnumerable<TEntity> AddRange(IEnumerable<TEntity> entities)
{
return _dbContext.Set<TEntity>().AddRange(entities);
}
}
public class TdxRepositoryService : ITdxRepositoryService
{
/// <summary>
/// The generic repository for <see cref="TdxRepository"/>
/// </summary>
private readonly IGenericRepository<TdxRepository> _tdxGenericRepository;
/// <summary>
/// Constructor
/// </summary>
/// <param name="tdxGenericRepository">The generic repository for <see cref="TdxRepository"/></param>
public TdxRepositoryService(IGenericRepository<TdxRepository> tdxGenericRepository)
{
_tdxGenericRepository = tdxGenericRepository;
}
/// <inheritdoc />
public IEnumerable<TdxRepository> GetRepositories(bool includeInactive)
{
var tdxRepositories = includeInactive
? _tdxGenericRepository.GetAll()
: _tdxGenericRepository.GetAll().Where(x => x.Active);
return tdxRepositories
.ToList();
}
/// <inheritdoc />
public TdxRepository GeTdxRepositoryById(int repositoryId)
{
return _tdxGenericRepository
.FindBy(x => x.Id == repositoryId)
.FirstOrDefault();
}
///<inheritdoc/>
public TdxRepository GeTdxRepositoryByName(string repositoryName)
{
return _tdxGenericRepository
.FindBy(x => x.Name.LOWER() == repositoryName.ToLower())
.FirstOrDefault();
}
}
{
DbContext DbContext { get; }
int Save();
}
public class UnitOfWork : IUnitOfWork
{
public UnitOfWork(DbContext dbContext)
{
DbContext = dbContext;
}
public DbContext DbContext { get; }
public int Save()
{
return DbContext.SaveChanges();
}
}
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
private readonly DbContext _dbContext;
public GenericRepository(IUnitOfWork unitOfWork)
{
_dbContext = unitOfWork.DbContext;
}
public IQueryable<TEntity> GetAll()
{
IQueryable<TEntity> query = _dbContext.Set<TEntity>();
return query;
}
public IQueryable<TEntity> FindBy(Expression<Func<TEntity, bool>> predicate)
{
IQueryable<TEntity> query = _dbContext.Set<TEntity>().Where(predicate);
return query;
}
public TEntity Add(TEntity entity)
{
return _dbContext.Set<TEntity>().Add(entity);
}
public void Delete(TEntity entity)
{
_dbContext.Set<TEntity>().Remove(entity);
}
public void Update(TEntity entity)
{
_dbContext.Entry(entity).State = EntityState.Modified;
}
public void Save()
{
_dbContext.SaveChanges();
}
public IEnumerable<TEntity> AddRange(IEnumerable<TEntity> entities)
{
return _dbContext.Set<TEntity>().AddRange(entities);
}
}
public class TdxRepositoryService : ITdxRepositoryService
{
/// <summary>
/// The generic repository for <see cref="TdxRepository"/>
/// </summary>
private readonly IGenericRepository<TdxRepository> _tdxGenericRepository;
/// <summary>
/// Constructor
/// </summary>
/// <param name="tdxGenericRepository">The generic repository for <see cref="TdxRepository"/></param>
public TdxRepositoryService(IGenericRepository<TdxRepository> tdxGenericRepository)
{
_tdxGenericRepository = tdxGenericRepository;
}
/// <inheritdoc />
public IEnumerable<TdxRepository> GetRepositories(bool includeInactive)
{
var tdxRepositories = includeInactive
? _tdxGenericRepository.GetAll()
: _tdxGenericRepository.GetAll().Where(x => x.Active);
return tdxRepositories
.ToList();
}
/// <inheritdoc />
public TdxRepository GeTdxRepositoryById(int repositoryId)
{
return _tdxGenericRepository
.FindBy(x => x.Id == repositoryId)
.FirstOrDefault();
}
///<inheritdoc/>
public TdxRepository GeTdxRepositoryByName(string repositoryName)
{
return _tdxGenericRepository
.FindBy(x => x.Name.LOWER() == repositoryName.ToLower())
.FirstOrDefault();
}
}
No comments:
Post a Comment