public Pedido ObterPedidoPorId(int id)
 {
     using (var db = new ContextoDeDados())
     {
         return(db.Pedido.Find(id));
     }
 }
 public List <Pedido> ObterPedidos()
 {
     using (var db = new ContextoDeDados())
     {
         //TODO: paginar
         return(db.Pedido.ToList());
     }
 }
 public void CriarUsuario(Usuario usuario)
 {
     using (var db = new ContextoDeDados())
     {
         db.Entry <Usuario>(usuario).State = System.Data.Entity.EntityState.Added;
         db.SaveChanges();
     }
 }
 public void IncluirPedido(Pedido pedido)
 {
     using (var db = new ContextoDeDados())
     {
         /*
          * Para informarmos um INSERT, devemos setar o State como Added.
          */
         db.Entry <Pedido>(pedido).State = EntityState.Added;
         db.SaveChanges();
     }
 }
 public void ExcluirPedido(int id)
 {
     using (var db = new ContextoDeDados())
     {
         /*
          * Para realizar um DELETE no banco de dados,
          * infelizmente precisamos buscar o objeto no banco para então
          * removê-lo.
          */
         Pedido pedidoASerExcluido = db.Pedido.Find(id);
         db.Entry <Pedido>(pedidoASerExcluido).State = EntityState.Deleted;
         db.SaveChanges();
     }
 }
        public Usuario BuscarUsuarioPorAutenticacao(string email, string senha)
        {
            using (var db = new ContextoDeDados())
            {
                /*
                 * Neste caso, o usuário possui uma lista de permissões.
                 * Essa lista de permissões é uma tabela no banco também.
                 * Podemos, através do include, dizer que, além de carregar os dados
                 * do usuário, deve trazer carregados as permissões dele.
                 */
                Usuario usuario = db.Usuario.Include("Permissoes").FirstOrDefault(
                    u =>
                    u.Email.Equals(email) &&
                    u.Senha.Equals(senha));

                return(usuario);
            }
        }
        public List <Pedido> ObterPedidoPorFiltro(string cliente, string produto)
        {
            using (var db = new ContextoDeDados())
            {
                /*
                 * Cada propriedade DbSet de nosso contexto é um IQueryable.
                 * Um IQueryable é uma... query.
                 * Não indica que estamos indo à banco fazer a consta, estamos apenas
                 * montando nossa query, ok?
                 *
                 * Neste caso, seria como se estivéssemos iniciando nossa query com
                 * um 'SELECT * FROM Pedido'
                 */
                IQueryable <Pedido> query = db.Pedido;

                if (!String.IsNullOrWhiteSpace(cliente))
                {
                    /*
                     * Aqui estamos concatenando nossa query,
                     * que agora não é só mais um 'SELECT * FROM Pedido', mas
                     * um 'SELECT * FROM Pedido WHERE NomeCliente = 'valor da variável cliente''
                     */
                    query = query.Where(p => p.NomeCliente.Equals(cliente));
                }

                if (!String.IsNullOrWhiteSpace(produto))
                {
                    query = query.Where(p => p.NomeProduto.Equals(produto));
                }

                /*
                 * Quando executamos métodos como ToList, ToArray, FirstOrDefault, First, Single,
                 * Any, entre outros (ou seja, que não retornam IQueryable ou IEnumerable),
                 * estamos, neste momento, EXECUTANDO a query montada anteriormente no banco
                 * de dados, lendo seus dados, convertendo para objetos, e retornando uma lista deles.
                 */
                return(query.ToList());
            }
        }
 public void AtualizarPedido(Pedido pedido)
 {
     /*
      * Para fazermos uma conexão com o banco via EF, precisamos
      * instanciar um objeto do mesmo tipo de nosso DbContext, que no nosso
      * caso é o ContextoDeDados.
      */
     using (var db = new ContextoDeDados())
     {
         /*
          * Existem várias formas de fazer um Update de uma entidade.
          * Um deles é utilizando o método Entry, na qual você informa o tipo
          * de objeto que será feito o update (<Pedido>), passa o objeto
          * como parâmetro em seguida seta o stado deste objeto no banco de dados.
          * O EF irá saber que deve fazer um Update quando o estado for EntityState.Modified.
          *
          * Em seguida chamaremos o método .SaveChanges(), que irá definitivamente
          * executar a query no banco de dados.
          */
         db.Entry <Pedido>(pedido).State = EntityState.Modified;
         db.SaveChanges();
     }
 }