public virtual IQueryable <TEntity> BuildQuery(Expression <Func <TEntity, bool> > filter = null, string includeProperties = "")
        {
            IQueryable <TEntity> query = DbEntitySet.AsNoTracking();

            foreach (var include in includeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
            {
                query = query.Include(include);
            }

            if (filter != null)
            {
                query = query.Where(filter);
            }

            return(query);
        }