예제 #1
0
        public void Insert(Cliente cliente)
        {
            //Validar
            using (EstacionamentoDbContext db = new EstacionamentoDbContext())
            {
                //Exemplo de pesquisa de clientes que contenham a letra "a" no nome ordenados por cpf
                List <Cliente> clientes = db.Clientes.Where(cli => cli.Nome.Contains("a")).OrderBy(cli => cli.CPF).ToList();

                //Retorna o valor toral já pago pelo cliente em todas as movimentações do primeiro cliente que tenha a letra "a" no nome
                double valor = clientes[0].Movimentacoes.Sum(soma => soma.ValorTotal);

                //Exemplo de pesquisa de vaga por ID
                //EXTREMAMENTE COMUM
                //O find é mais performático que o FirstOrDefault
                Vaga vaga = db.Vagas.Find(6);

                //Exemplo pesquisar por vagas livres
                List <Vaga> vagas = db.Vagas.Where(vag => vag.VagaLivre).ToList();

                //Exemplo para pesquisar as movimentações da data hoje, apenas para vagas de Helicoptero
                List <Movimentacao> movimentacoes = db.Movimentacoes.Where(m => m.DataEntrada.Date == DateTime.Now.Date && m.Vaga.TipoVaga == Entity.Enums.TipoVeiculo.Helicoptero).ToList();



                Cliente c = new Cliente()
                {
                    Nome           = "Danizinho Bernart",
                    Ativo          = true,
                    CPF            = "901.917.069-49",
                    DataNascimento = DateTime.Now.AddYears(-25)
                };
                Vaga v = new Vaga()
                {
                    EhCoberta      = true,
                    EhPreferencial = true,
                    TipoVaga       = Entity.Enums.TipoVeiculo.Helicoptero,
                    VagaLivre      = true
                };
                Movimentacao mov = new Movimentacao();
                mov.Cor         = 0;
                mov.DataEntrada = DateTime.Now;
                mov.Modelo      = "VW";
                mov.Vaga        = v;
                mov.ValorTotal  = v.CalcularPreco();

                db.Movimentacoes.Add(mov);
                db.SaveChanges();

                db.Clientes.Add(c);
                db.Vagas.Add(v);
                db.SaveChanges();

                //UPDATE
                //Ao buscar um dado do entity, existe um mecanismo conhecido como TRACKING
                //Este Mecanismo observa as alterações feitas no objeto e, quando o método
                //SaveChanges é chamado na base, ele efetuará um update de tudo que foi alterado.
                Cliente cli1 = db.Clientes.Find(5);
                c.Nome += "Bernart";
                db.SaveChanges();

                Vaga vagaASerAtualizada = new Vaga();
                vagaASerAtualizada.ID                     = 3;
                vagaASerAtualizada.EhCoberta              = true;
                vagaASerAtualizada.EhPreferencial         = true;
                db.Entry <Vaga>(vagaASerAtualizada).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();

                //Delete
                Vaga vagaASerExcluida = new Vaga();
                vagaASerAtualizada.ID = 3;
                db.Entry <Vaga>(vagaASerAtualizada).State = System.Data.Entity.EntityState.Deleted;
                db.SaveChanges();
            }
        }