示例#1
0
        private static void Relacionamento1para1()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            var cliente = new Cliente()
            {
                Nome = "Nome do cliente",
                //Telefone = "Telefone do cliente",
                Endereco = new Endereco
                {
                    Logradouro = "Rua das flores, 124",
                    Bairro     = "Jardin",
                    Cidade     = "Floricultura",
                    Estado     = "Flora do Sul"
                },
                Profissao = new Profissao
                {
                    Nome = "Cortador de galhos"
                }
            };

            db.Clientes.Add(cliente);
            db.SaveChanges();

            var clientes = db.Clientes.AsNoTracking().ToList();

            clientes.ForEach(c =>
            {
                Console.WriteLine($"Nome: {c.Nome} | Profissão: {c.Profissao.Nome }");
            });
        }
示例#2
0
        private static void RelacionamentoNparaN()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            var cliente1 = new Cliente()
            {
                Nome = "Nome do cliente 1",
            };

            var cliente2 = new Cliente()
            {
                Nome = "Nome do cliente 2",
            };

            var filme1 = new Filme()
            {
                Nome          = "Esqueceram de mim",
                AnoLancamento = 1990
            };

            var filme2 = new Filme()
            {
                Nome          = "Matrix",
                AnoLancamento = 1999
            };

            var filme3 = new Filme()
            {
                Nome          = "Tomates verdes fritos",
                AnoLancamento = 1991
            };

            cliente1.Filmes.Add(filme1);

            filme2.Clientes.Add(cliente1);
            filme2.Clientes.Add(cliente2);

            filme3.Clientes.Add(cliente2);

            db.AddRange(cliente1, cliente2, filme1, filme2, filme3);
            db.SaveChanges();

            var clientes =
                db.Clientes
                .Include(c => c.Filmes)
                .AsNoTracking()
                .ToList();

            clientes.ForEach(c =>
            {
                Console.WriteLine($"Nome: {c.Nome}");

                c.Filmes.ToList().ForEach(f =>
                {
                    Console.WriteLine($"- Filme: ({f.Nome}) | {f.AnoLancamento}");
                });
            });
        }
示例#3
0
        private static void AtualizarDados()
        {
            using var db = new Data.ApplicationContext();
            //var cliente = db.Clientes.Find(1);

            var cliente = new Cliente
            {
                Id = 1
            };

            var clienteDesconectado = new
            {
                Nome     = "Cliente desconectado passo 3",
                Telefone = "7851245632"
            };

            //rastrear o objeto
            db.Attach(cliente);
            db.Entry(cliente).CurrentValues.SetValues(clienteDesconectado);

            //db.Clientes.Update(cliente);
            db.SaveChanges();

            Console.ReadKey();
        }
示例#4
0
        private static void OwnedType()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            var cliente = new Cliente()
            {
                Nome = "Nome do cliente",
                //Telefone = "Telefone do cliente",
                Endereco = new Endereco
                {
                    Logradouro = "Rua das flores, 124",
                    Bairro     = "Jardin",
                    Cidade     = "Floricultura",
                    Estado     = "Flora do Sul"
                }
            };

            db.Clientes.Add(cliente);
            db.SaveChanges();

            var clientes = db.Clientes.AsNoTracking().ToList();

            var options = new JsonSerializerOptions {
                WriteIndented = true
            };

            clientes.ForEach(c =>
            {
                var json = JsonSerializer.Serialize(clientes, options);
                Console.WriteLine(json);
            });
        }
示例#5
0
        private static void CadastrarPedido()
        {
            using var db = new Data.ApplicationContext();

            var cliente = db.Clientes.FirstOrDefault();
            var produto = db.Produtos.FirstOrDefault();

            var pedido = new Pedido
            {
                ClienteId    = cliente.Id,
                IniciadoEm   = DateTime.Now,
                FinalizadoEm = DateTime.Now,
                Observacao   = "Pedido teste",
                Status       = StatusPedido.Anlise,
                TipoFrete    = TipoFrete.SemFrete,
                Itens        = new List <PedidoItem>
                {
                    new PedidoItem
                    {
                        ProdutoId  = produto.Id,
                        Desconto   = 0,
                        Quantidade = 1,
                        Valor      = 10,
                    }
                }
            };

            db.Pedidos.Add(pedido);
            db.SaveChanges();

            Console.ReadKey();
        }
示例#6
0
        static void TestandoTimeout()
        {
            using var db = new Curso.Data.ApplicationContext();

            db.Database.SetCommandTimeout(21);

            db.Database.ExecuteSqlRaw("WAITFOR DELAY '00:00:20';SELECT 1;");
        }
示例#7
0
        private static void InserirDados()
        {
            var produto = new Produto
            {
                Descricao    = "Produto Teste",
                CodigoBarras = "1234567897",
                Valor        = 10m,
                TipoProduto  = TipoProduto.MercadoriaParaRevenda,
                Ativo        = true
            };
            var listaClientes = new List <Cliente>
            {
                new Cliente
                {
                    Nome     = "Amanda Rodrigues2",
                    CEP      = "79290000",
                    Cidade   = "Bonito",
                    Estado   = "MS",
                    Telefone = "991646461"
                },
                new Cliente
                {
                    Nome     = "Amanda Rodrigues3",
                    CEP      = "79290000",
                    Cidade   = "Bonito",
                    Estado   = "MS",
                    Telefone = "991646461"
                },
                new Cliente {
                    Nome     = "Amanda Rodrigues4",
                    CEP      = "79290000",
                    Cidade   = "Bonito",
                    Estado   = "MS",
                    Telefone = "991646461"
                }
            };
            var cliente = new Cliente
            {
                Nome     = "Amanda Rodrigues",
                CEP      = "79290000",
                Cidade   = "Bonito",
                Estado   = "MS",
                Telefone = "991646461"
            };

            using var db = new Data.ApplicationContext();
            //db.Produtos.Add(produto);
            //db.Set<Produto>().Add(produto);
            //db.Add(cliente);
            db.AddRange(listaClientes);

            var registros = db.SaveChanges();

            Console.WriteLine($"Total de registros:  : {registros}");
        }
示例#8
0
        private static void ConsultarPedidoCarregamentoAdiantado()
        {
            using var db = new Data.ApplicationContext();
            var pedidos = db
                          .Pedidos
                          .Include(p => p.Itens)
                          .ThenInclude(p => p.Produto) //o que está dentro de include (itens)
                          .ToList();

            Console.WriteLine(pedidos.Count);
        }
示例#9
0
        static void SetupDb(Curso.Data.ApplicationContext db)
        {
            if (db.Database.EnsureCreated())
            {
                if (!db.Departamentos.Any())
                {
                    db.Departamentos.AddRange(
                        new Curso.Domain.Departamento
                    {
                        Ativo        = true,
                        Descricao    = "Departamento 01",
                        Funcionarios = new System.Collections.Generic.List <Curso.Domain.Funcionario>
                        {
                            new Curso.Domain.Funcionario
                            {
                                Nome = "Rafael Almeida",
                                CPF  = "99999999911",
                                Rg   = "2100062"
                            }
                        },
                        Excluido = true
                    },
                        new Curso.Domain.Departamento
                    {
                        Ativo        = true,
                        Descricao    = "Departamento 02",
                        Funcionarios = new System.Collections.Generic.List <Curso.Domain.Funcionario>
                        {
                            new Curso.Domain.Funcionario
                            {
                                Nome = "Bruno Brito",
                                CPF  = "88888888811",
                                Rg   = "3100062"
                            },
                            new Curso.Domain.Funcionario
                            {
                                Nome = "Eduardo Pires",
                                CPF  = "77777777711",
                                Rg   = "1100062"
                            }
                        }
                    },
                        new Curso.Domain.Departamento
                    {
                        Ativo     = true,
                        Descricao = "Departamento 03",
                    });

                    db.SaveChanges();
                    db.ChangeTracker.Clear();
                }
            }
        }
示例#10
0
        private static void RemoverRegistros()
        {
            using var db = new Data.ApplicationContext();
            //var clienteRemover = db.Clientes.Find(4);
            var clienteRemover = new Cliente {
                Id = 3
            };                                           //dessa forma ela só executa um comando no banco de dados

            db.Entry(clienteRemover).State = EntityState.Deleted;
            //db.Remove(clienteRemover);
            db.SaveChanges();
        }
示例#11
0
        private static void InserirDadosEmMassa()
        {
            var produto = new Produto
            {
                Descricao    = "Produto Teste",
                CodigoBarras = "12365447856981",
                Valor        = 10m,
                TipoProduto  = TipoProduto.MercadoriaParaRevenda,
                Ativo        = true
            };

            var cliente = new Cliente
            {
                Nome     = "Usuario Teste",
                CEP      = "88887775",
                Cidade   = "Itabaiana",
                Estado   = "SP",
                Telefone = "11236541236",
            };

            var listaClientes = new[]
            {
                new Cliente
                {
                    Nome     = "Usuario Teste 2",
                    CEP      = "88887775",
                    Cidade   = "Itabaiana",
                    Estado   = "SP",
                    Telefone = "11236541236",
                },
                new Cliente

                {
                    Nome     = "Usuario Teste 3",
                    CEP      = "88887775",
                    Cidade   = "Itabaiana",
                    Estado   = "SP",
                    Telefone = "11236541237",
                }
            };

            using var db = new Data.ApplicationContext();
            // db.AddRange(produto, cliente);

            db.Set <Cliente>().AddRange(listaClientes);

            //db.AddRange(listaClientes);

            var registros = db.SaveChanges();

            Console.WriteLine($"Total Registro(s): {registros}");
            Console.ReadKey();
        }
示例#12
0
        public static void ConsultarDados()
        {
            using var db = new Data.ApplicationContext();
            //var consultaPorSintaxe = (from c in db.Clientes where c.Id>0 select c).ToList();
            var consultaPorMetodo = db.Clientes.Where(p => p.Id > 0).ToList();

            foreach (var cliente in consultaPorMetodo)
            {
                Console.WriteLine($"Consultando Cliente: {cliente.Nome}");
                db.Clientes.Find(cliente.Id);
            }
        }
示例#13
0
        public static void AtualizarDados()
        {
            using var db = new Data.ApplicationContext();
            var cliente = db.Clientes.Find(1);

            cliente.Nome = "Cliente alterado 2";

            //quando usa o update ele atualiza todos os dados da entidade,
            //quando você não utilzia a consulta de alteração ficar menos e mais performaartica
            //db.Update(cliente);

            db.SaveChanges();
        }
示例#14
0
        static void CriarStoredProcedureConsulta()
        {
            var scriptSP = @"
            CREATE OR ALTER PROCEDURE SelecionarDepartamento
                @Descricao VARCHAR(50)
            AS
            BEGIN
                SELECT * FROM Departamentos WHERE Descricao LIKE @Descricao + '%'
            END";

            using var db = new Curso.Data.ApplicationContext();

            db.Database.ExecuteSqlRaw(scriptSP);
        }
示例#15
0
        private static void RemoverRegistros()
        {
            using var db = new Data.ApplicationContext();
            //var cliente = db.Clientes.Find(3);
            var cliente = new Cliente {
                Id = 4
            };

            //db.Clientes.Remove(cliente);
            //db.Remove(cliente);
            db.Entry(cliente).State = EntityState.Deleted;

            db.SaveChanges();
            Console.ReadKey();
        }
示例#16
0
        static void CriarStoredProcedure()
        {
            var scriptSP = @"
            CREATE OR ALTER PROCEDURE CriarDepartamento
                @Descricao VARCHAR(50),
                @ATivo BIT
            AS
            BEGIN
                INSERT INTO Departamentos (Descricao, Ativo, Excluido)
                VALUES (@Descricao, @Ativo, 0)
            END";

            using var db = new Curso.Data.ApplicationContext();

            db.Database.ExecuteSqlRaw(scriptSP);
        }
示例#17
0
        private static void ConsultarDados()
        {
            using var db = new Data.ApplicationContext();
            //var consultaPorSintaxe = (from c in db.Clientes where c.Id > 0 select c).ToList();
            var consultaPorMetodo = db.Clientes
                                    .Where(p => p.Id > 0)
                                    .OrderBy(p => p.Id > 0)
                                    .ToList();

            foreach (var cliente in consultaPorMetodo)
            {
                Console.WriteLine($"Consultando Cliente: {cliente.Id}");
                //db.Clientes.Find(cliente.Id);
                db.Clientes.FirstOrDefault(p => p.Id == cliente.Id);
            }

            Console.ReadKey();
        }
示例#18
0
        static void ConsultarDadosViaProcedure()
        {
            using var db = new Curso.Data.ApplicationContext();

            var desc = new SqlParameter("@desc", "Dep");

            var departamentos =
                db.Departamentos
                //.FromSqlRaw("EXECUTE SelecionarDepartamento @p0", "Dep")
                //.FromSqlRaw("EXECUTE SelecionarDepartamento @desc", desc)
                .FromSqlInterpolated($"EXECUTE SelecionarDepartamento {desc}")
                .ToList();

            foreach (var dep in departamentos)
            {
                Console.WriteLine(dep.Descricao);
            }
        }
示例#19
0
        static void DivisaoDeConsulta()
        {
            using var db = new Curso.Data.ApplicationContext();
            SetupDb(db);

            var departamentos = db.Departamentos
                                .Include(p => p.Funcionarios)
                                .AsSingleQuery()
                                .Where(p => p.Id < 3)
                                .ToList();

            foreach (var dep in departamentos)
            {
                Console.WriteLine($"Descrição: {dep.Descricao}");
                foreach (var func in dep.Funcionarios)
                {
                    Console.WriteLine($"\tNome: {func.Nome}");
                }
            }
        }
示例#20
0
        static void Main(string[] args)
        {
            using var db = new Data.ApplicationContext();
            //aplicando as migrations na base de dados
            //db.Database.Migrate();

            //var existe = db.Database.GetPendingMigrations().Any();
            //if (existe)
            //{
            //    //validando se existe migrations pendentes
            //}

            //InserirDados();
            //InserirDadosEmMassa();
            //ConsultarDados();
            //CadastrarPedido();
            //ConsultarPedidoCarregamentoAdiantado();
            //AtualizarDados();
            //RemoverRegistros();
        }
示例#21
0
        private static void InserirDados()
        {
            var produto = new Produto
            {
                Descricao    = "Produto Teste",
                CodigoBarras = "12365447856981",
                Valor        = 10m,
                TipoProduto  = TipoProduto.MercadoriaParaRevenda,
                Ativo        = true
            };

            using var db = new Data.ApplicationContext();
            db.Produtos.Add(produto);
            db.Set <Produto>().Add(produto);
            db.Entry(produto).State = EntityState.Added;
            db.Add(produto);

            var registros = db.SaveChanges();

            Console.WriteLine($"Total Registro(s): {registros}");
            Console.ReadKey();
        }
示例#22
0
        private static void ExecutarEstrategiaResiliencia()
        {
            using var db = new Curso.Data.ApplicationContext();

            var strategy = db.Database.CreateExecutionStrategy();

            strategy.Execute(() =>
            {
                using var transacation = db.Database.BeginTransaction();

                var newDep = db.Departamentos.Add(new Departamento {
                    Descricao = "Novo departamento adicionado"
                });
                db.SaveChanges();

                db.Funcionarios.Add(new Funcionario {
                    DepartamentoId = newDep.Entity.Id, Nome = "Novo funcionario adicionado"
                });
                db.SaveChanges();

                transacation.Commit();
            });
        }
示例#23
0
        static void InserirDadosViaProcedure()
        {
            using var db = new Curso.Data.ApplicationContext();

            db.Database.ExecuteSqlRaw("EXECUTE CriarDepartamento @p0, @p1", "Departamento novo", true);
        }
示例#24
0
        private static void Relacionamento1paraN()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            var cliente = new Cliente()
            {
                Nome     = "Nome do cliente",
                Endereco = new Endereco
                {
                    Logradouro = "Rua das flores, 124",
                    Bairro     = "Jardin",
                    Cidade     = "Floricultura",
                    Estado     = "Flora do Sul"
                },
                Profissao = new Profissao
                {
                    Nome = "Cortador de galhos"
                }
            };

            cliente.Telefones.Add(new Telefone()
            {
                DDD = 19, Numero = 34434533
            });
            cliente.Telefones.Add(new Telefone()
            {
                DDD = 11, Numero = 93445134
            });

            cliente.Contas.Add(new ContasReceber()
            {
                Valor = 100, Vencimento = DateTime.Now.AddDays(30)
            });
            cliente.Contas.Add(new ContasReceber()
            {
                Valor = 200, Vencimento = DateTime.Now.AddDays(60)
            });
            cliente.Contas.Add(new ContasReceber()
            {
                Valor = 300, Vencimento = DateTime.Now.AddDays(90)
            });

            db.Clientes.Add(cliente);
            db.SaveChanges();

            var clientes =
                db.Clientes
                .Include(c => c.Telefones)
                .Include(c => c.Contas)
                .AsNoTracking()
                .ToList();

            clientes.ForEach(c =>
            {
                Console.WriteLine($"Nome: {c.Nome} | Profissão: {c.Profissao.Nome }");

                c.Telefones.ToList().ForEach(t =>
                {
                    Console.WriteLine($"- Telefone ({t.DDD}) {t.Numero}");
                });

                Console.WriteLine("------------CONTAS-------------");
                c.Contas.ToList().ForEach(r =>
                {
                    Console.WriteLine($"- Valor: ({r.Valor.ToString("C")}) | Vencimento: {r.Vencimento}");
                });
            });
        }