public class DapperGenericRepository<TEntity> : IEntityRepository<TEntity> where TEntity : class, IEntity, new()
    {
        public void Add(TEntity entity)
        {
            using (var connection = DbConnect.Connection)
            {
                connection.Insert(entity);
            }
        }

        public void Delete(TEntity entity, Expression<Func<TEntity, bool>> filter = null)
        {
            using (var connection = DbConnect.Connection)
            {
                connection.Delete(entity);
            }
        }

        public TEntity Get(Expression<Func<TEntity, bool>> filter)
        {
            using (var connection = DbConnect.Connection)
            {        
                return connection.GetAll<TEntity>().Where(filter.Compile()).SingleOrDefault();
            }
        }

        public List<TEntity> GetAll(Expression<Func<TEntity, bool>> filter = null)
        {
            using (var connection = DbConnect.Connection)
            {
                return filter == null ?
                  connection.GetAll<TEntity>().ToList() :
                  connection.GetAll<TEntity>().Where(filter.Compile()).ToList();
            }
        }

        public void Update(TEntity entity, Expression<Func<TEntity, bool>> filter = null)
        {
            using (var connection = DbConnect.Connection)
            {
                connection.Update(entity);
            }
        }
    }