public virtual IQueryable<T> GetAll(string[] includes = null)
{
if (includes != null && includes.Count() > 0)
{
var query = _context.Set<TEntity>().Include(includes.First());
foreach (var include in includes.Skip(1))
query = query.Include(include);
return query.Project().To<T>();
}
return _context.Set<TEntity>().Project().To<T>();
}