/// <summary> /// Inclui entidades na consulta /// </summary> /// <param name="carregarEntidades"></param> /// <param name="tabela"></param> /// <returns></returns> protected static IQueryable <TEntidade> IncluiEntidades(ListaEntidade <TEntidade> carregarEntidades, IQueryable <TEntidade> tabela) { if (carregarEntidades != null && carregarEntidades.Itens != null && carregarEntidades.Itens.Any()) { foreach (Expression <Func <TEntidade, IEntidade> > path in carregarEntidades.Itens) { tabela = tabela.Include(path); } } if (carregarEntidades != null && carregarEntidades.Itens_collection != null && carregarEntidades.Itens_collection.Any()) { foreach (Expression <Func <TEntidade, IEnumerable <IEntidade> > > path in carregarEntidades.Itens_collection) { tabela = tabela.Include(path); } } return(tabela); }
/// <summary> /// Retorna a lista de objetos aplicando um filtro /// </summary> /// <param name="filtro">Expressão a ser usada como filtro</param> /// <param name="carregarEntidades">Entidades que devem ser carregadas na consulta</param> /// <returns>Lista de objetos encontrados</returns> public async Task <List <TEntidade> > ConsultarOrdenadoAsync <TKey>(Expression <Func <TEntidade, bool> > filtro, Expression <Func <TEntidade, TKey> > ordenacao, ListaEntidade <TEntidade> carregarEntidades = null, bool ascendente = true) { //Busca o objeto solicitado this.Db.ChangeTracker.AutoDetectChangesEnabled = false; IQueryable <TEntidade> tabela = null; if (filtro == null) { tabela = this.Db.Set <TEntidade>().AsQueryable(); } else { tabela = this.Db.Set <TEntidade>().Where(filtro); } //Ordena os itens if (ordenacao != null) { if (!ascendente) { tabela = tabela.OrderByDescending(ordenacao); } else { tabela = tabela.OrderBy(ordenacao); } } tabela = IncluiEntidades(carregarEntidades, tabela); //Retorna return(await tabela.ToListAsync()); }
public async Task <List <TEntidade> > ConsultarAsync(Expression <Func <TEntidade, bool> > filtro, ListaEntidade <TEntidade> carregarEntidades = null, int paginaAtual = -1, int itensPagina = -1, bool ascendente = true) { //Busca o objeto solicitado this.Db.ChangeTracker.AutoDetectChangesEnabled = false; IQueryable <TEntidade> tabela = null; if (filtro == null) { tabela = this.Db.Set <TEntidade>().AsQueryable(); } else { tabela = this.Db.Set <TEntidade>().Where(filtro); } tabela = IncluiEntidades(carregarEntidades, tabela); //Efetua a busca no banco if (paginaAtual > -1 && itensPagina > -1) { tabela = tabela.Skip(paginaAtual * itensPagina).Take(itensPagina); } //Retorna return(await tabela.ToListAsync()); }
/// <summary> /// Retorna o objeto solicitado /// </summary> /// <param name="cod_anexo">ID do item</param> /// <param name="carregarEntidades">Entidades que devem ser carregadas na consulta</param> /// <returns>Objeto</returns> public async Task <TEntidade> ObterAsync(Expression <Func <TEntidade, bool> > filtro, ListaEntidade <TEntidade> carregarEntidades = null) { var retorno = default(TEntidade); //Busca o objeto solicitado this.Db.ChangeTracker.AutoDetectChangesEnabled = false; IQueryable <TEntidade> tabela = this.Db.Set <TEntidade>().Where(filtro); tabela = IncluiEntidades(carregarEntidades, tabela); retorno = await tabela.FirstOrDefaultAsync(); //Retorna return(retorno); }