/// <summary> /// Obtém uma única instância de T com base no filtro informado. /// </summary> /// <param name="predicate">Filtro a ser aplicado.</param> /// <param name="cacheable">Informa para a consulta que pode esta pode ser cacheada</param> /// <returns>Primeira ocorrência de T que atenda ao filtro.</returns> public T GetSingleBy(Expression <Func <T, bool> > predicate, bool cacheable) { NH.IQueryOver <T> queryOver = this.ObjectContext.Session.QueryOver <T>().Where(predicate); if (cacheable) { queryOver.Cacheable().CacheMode(NH.CacheMode.Normal); } return(queryOver.SingleOrDefault()); }
/// <summary> /// Obtém uma lista de instâncias de T com base no filtro informado. /// </summary> /// <param name="predicate">Filtro a ser aplicado.</param> /// <param name="cacheable">Informa para a consulta que pode esta pode ser cacheada</param> /// <param name="orderByExpression">Identifica o orderby a ser executado na consulta</param> /// <returns>Lista com ocorrência de T que atendem ao filtro.</returns> public IList <T> GetListBy(Expression <Func <T, bool> > predicate = null, Expression <Func <T, object> > orderByExpression = null, bool?cacheable = null) { if (cacheable == null) { cacheable = this.UseCacheByDefault; } NH.IQueryOver <T, T> queryOver = this.ObjectContext.Session.QueryOver <T>(); if (predicate != null) { queryOver = queryOver.Where(predicate); } if (orderByExpression != null) { queryOver = queryOver.OrderBy(orderByExpression).Asc; } if (cacheable.Value) { queryOver.Cacheable().CacheMode(NH.CacheMode.Normal); } return(queryOver.List()); }
/// <summary> /// Obtém IQueryOver (ICriteria API) para que possa ser utilizado em consultas com lambda expressions /// </summary> /// <returns></returns> protected virtual NH.IQueryOver <T, T> QueryOver <T>() where T : Business.Entity { NH.IQueryOver <T, T> query = this.ObjectContext.Session.QueryOver <T>(); return(query); }