public int Count(ISpecification <TEntity> spec)
        {
            NHibernateSpecification <TEntity> nhSpec = (NHibernateSpecification <TEntity>)spec;

            var cq = nhSpec.GetSession().Query <TEntity>();

            if (nhSpec.CriteriaExpression != null)
            {
                cq = cq.Where(nhSpec.CriteriaExpression);
            }

            return(cq.Count());
        }
        public PagingResult <TEntity> FindPaging(ISpecification <TEntity> spec)
        {
            NHibernateSpecification <TEntity> nhSpec = (NHibernateSpecification <TEntity>)spec;

            var cq = nhSpec.GetSession().Query <TEntity>();

            if (nhSpec.CriteriaExpression != null)
            {
                cq = cq.Where(nhSpec.CriteriaExpression);
            }

            PagingResult <TEntity> result = new PagingResult <TEntity>(cq.Count());

            result.AddRange(nhSpec.Query.ToList());
            return(result);
        }