コード例 #1
0
        private static void SelectComClausula()
        {
            using (var contexto = new LojaContext())
            {
                var cliente = contexto.Clientes.Include(e => e.Endereco).FirstOrDefault();

                Console.WriteLine($"Endereco de entrega {cliente.Endereco.Logradouro}");

                /*
                 *  Com o objeto contexto, chamaremos o método Entry() passando a referência de produto.
                 *  Após, pegaremos a coleção da propriedade Compra com o método Collection(p => p.Compras).
                 *  Em seguida faremos uma Query(), que filtrará com a condição Where(c => c.Preco > 10).
                 *  Por último, carregaremos com Load() na referência passada no Entry().
                 */
                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 9004)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 10)
                .Load();

                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine("\t" + item);
                }
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                ChamaLogger(contexto);
                var cliente = contexto.Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .FirstOrDefault();
                Console.WriteLine($"Endereço: {cliente.EnderecoDeEntrega}");

                //var produto = contexto
                //    .Produtos
                //    .Where(p => p.Id == 2002)
                //    .Include(p => p.Compras)
                //    .FirstOrDefault();

                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 2002)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()                  // <- Sub consulta
                .Where(c => c.Preco > 20) // <- Agora sim podemos aplicar condições às compras
                .Load();

                Console.WriteLine($"\nCompras de {produto.Nome} com valor acima de R$20,00:");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var cliente = contexto
                              .Clientes
                              .Include(e => e.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereço de entrga: {cliente.EnderecoDeEntrega.Logradouro}");


                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 2004)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 10)
                .Load();

                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }

            Console.ReadKey();
        }
コード例 #4
0
        static void Main(string[] args)
        {
            using (var context = new LojaContext())
            {
                var produto = context
                              .Produtos
                              .Where(p => p.Id == 5002)
                              .First();

                context.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Id == 1002)
                .Load();



                Console.WriteLine($"Total em vendas do produto {produto.Nome}");
                foreach (var compra in produto.Compras)
                {
                    Console.WriteLine(compra.Preco);
                }
            }

            Console.ReadKey();
        }
コード例 #5
0
        static void TestaChengeTracker()
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var produtos = contexto.Produtos.ToList();
                ExibeEntries(contexto.ChangeTracker.Entries());

                var novoProduto = new Produto() /*adicionando novo ´produto para poder observar a propriedade added*/
                {
                    Nome          = "sabão em pó",
                    Categoria     = "limpeza",
                    PrecoUnitario = 2.99
                };
                contexto.Produtos.Add(novoProduto);
                ExibeEntries(contexto.ChangeTracker.Entries());

                var p1 = produtos.Last();
                contexto.Produtos.Remove(p1);
                ExibeEntries(contexto.ChangeTracker.Entries());

                //contexto.SaveChanges();

                var entry = contexto.Entry(novoProduto);
                Console.WriteLine(entry.Entity.ToString() + "-" + entry.State);

                //ExibeEntries(contexto.ChangeTracker.Entries());
            }
        }
コード例 #6
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereço de Entrega: {cliente.EnderecoDeEntrega.Logradouro}");

                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 5005)
                              .FirstOrDefault();

                // aplicando filtro em objetos relacionados
                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 10)
                .Load();

                Console.WriteLine($"Mostrando as compras do produto: {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }
        }
コード例 #7
0
        private static void LoggerSQLViaEntity()
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var produtos = contexto.Produtos.ToList();
                ExibeEntries(contexto.ChangeTracker.Entries());

                var novoProduto = new Produto()
                {
                    Nome          = "Sabão em pó",
                    Categoria     = "Limpeza",
                    PrecoUnitario = 4.99
                };
                contexto.Produtos.Add(novoProduto);
                ExibeEntries(contexto.ChangeTracker.Entries());

                contexto.Produtos.Remove(novoProduto);
                ExibeEntries(contexto.ChangeTracker.Entries());

                //var prd = produtos.First();
                //contexto.Produtos.Remove(prd);

                //contexto.SaveChanges();

                var entry = contexto.Entry(novoProduto);
                Console.WriteLine(entry.Entity.ToString() + " - " + entry.State);

                ExibeEntries(contexto.ChangeTracker.Entries());
            }
        }
コード例 #8
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var cliente = contexto
                              .Clientes
                              .Include(x => x.EnderecoEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"{cliente.EnderecoEntrega.Logradouro}");

                var produto = contexto
                              .Produtos
                              .Include(x => x.Compras)
                              .Where(x => x.Id == 2002)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(x => x.Compras)
                .Query()
                .Where(x => x.Preco < 0)
                .Load();

                Console.WriteLine("\n\nCompras: \n");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item.Preco);
                }
            }
        }
コード例 #9
0
ファイル: Program.cs プロジェクト: mafand/EntityFramework1
        private static void ExibeComprasDoProduto()
        {
            using (var contexto = new LojaContext())
            {
                // 1 para 1 => cliente/endereco
                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereco de entrega: { cliente.EnderecoDeEntrega.Logradouro}");

                // 1 para N => produto/compras
                var produto = contexto
                              .Produtos
                              //.Include(p => p.Compras)
                              .Where(p => p.Id == 1002)
                              .FirstOrDefault();

                // filtrar entidade relacionada
                // produto 'pao' com compras com preco acima de 10
                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 1)
                .Load();     // carregar relacionamento em instancia ja recuperada

                Console.WriteLine($"Monstrando as compras do produto {produto.Nome}");

                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }
        }
コード例 #10
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                LogSqlConsole(contexto);

                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereço de entrega de {cliente.Nome} é:\n {cliente.EnderecoDeEntrega}");

                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 3002)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco < 20.00)
                .Load();


                Console.WriteLine($"Mostrando as compras do produto:{produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }
        }
コード例 #11
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .First();

                Console.WriteLine($"Endereço de entrega: {cliente.EnderecoDeEntrega.Logradouro}");

                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 17)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 1)
                .Load();


                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine("\t" + item);
                }
            }
        }
コード例 #12
0
        private static void ListarComprasDeUmProduto()
        {
            using (var context = new LojaContext())
            {
                //BUSCA AS COMPRAS DE UM PRODUTO EM APENAS 1 PASSO
                //var comprasDeUmProduto = context.
                //    Compras
                //    .Include(c => c.Produto)
                //    .Where(c => c.Produto.Id == 3002)
                //    .ToList();

                //BUSCA AS COMPRAS DE UM PRODUTO EM APENAS 2 PASSOS
                //BUSCA UM PRODUTO NO BANCO DE DADOS
                var produto = context.Produtos.Where(p => p.Id == 3002).FirstOrDefault();

                context.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 1)
                .Load();

                foreach (var item in produto.Compras)
                {
                    Console.WriteLine($"{item.Produto.Nome}, {item.Preco}");
                }
            }
        }
コード例 #13
0
ファイル: Program.cs プロジェクト: Graubera/Store2
        static void Main(string[] args)
        {
            using (var context = new LojaContext())
            {
                context.Database.Migrate();
            }

            using (var context = new LojaContext())
            {
                var cliente = context
                              .Clientes
                              .Include(c => c.Endereco)
                              .FirstOrDefault();

                Debug.WriteLine($"Endereco de entrega : {cliente.Endereco.Logradouro}");

                var produto = context
                              .Produtos
                              .Include(p => p.Compras)
                              .Where(p => p.Id == 1)
                              .FirstOrDefault();

                context.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 10)
                .Load();

                Debug.WriteLine($"Mostrando as compras do produto : {produto.Nome}");
                foreach (Compra item in produto.Compras)
                {
                    Debug.WriteLine(item.Produto);
                }
            }
        }
コード例 #14
0
        public static void JoinRelacionamentoUmParaUm()
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());


                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)  // Relacionamento com a tabela enderço
                              .FirstOrDefault();


                Console.WriteLine($"Endereço de entrega: {cliente.EnderecoDeEntrega.Logradouro}");

                var produto = contexto
                              .Produtos
                              .Include(p => p.Compras)
                              .Where(p => p.Id == 16)
                              .FirstOrDefault();

                Console.WriteLine($"\n***************************************************\n");
                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
                Console.WriteLine($"\n***************************************************");

                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item.Produto);
                }

                /*
                 *  Executaremos a aplicação com "Ctrl + F5".
                 *  Poderemos ver que foi executado um SELECT em Produtos no banco de dados,
                 *  buscando o produto com o Id passado no filtro Where().
                 *  Em seguida foi feito um segundo SELECT em Compras,
                 *  filtrando pelo Id do produto passado no Entry() e pelo preço.
                 *  Por fim, serão apresentados os produtos com preço acima de R$ 10,00.
                 *
                 *  Esse cenário é bastante utilizado quando queremos aplicar filtros em
                 *  objetos relacionados da aplicação. Esta estratégia é conhecida como
                 *  Carregamento Explícito, onde trazemos só o que nos interessa.
                 *
                 *                 */
                // fazendo join e filtrando os dados da tabela join

                contexto.Entry(produto)     // Faz uma pesquina na tabela produto
                .Collection(p => p.Compras) // Vincula lista de compra na tabela produto
                .Query()                    // Faz uma query
                .Where(c => c.Preco > 10)   // filtra a query com as informações da compra
                .Load();                    // carrega os dados da compra.


                Console.ReadLine();
            }
        }
コード例 #15
0
        static void JoinUmParaUmMaisFiltro()
        {
            using (var contexto = new LojaContext())
            {
                var produto = contexto.Produtos.Include(p => p.Compras).Where(p => p.Id == 1).FirstOrDefault();
                contexto.Entry(produto).Collection(p => p.Compras).Query().Where(c => c.Quantidade > 5).Load();

                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
            }
        }
コード例 #16
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                LogSql(contexto);
                //Produtos da Promocao
                var promocao = contexto.Promocoes
                               .Include(p => p.Produtos)
                               .ThenInclude(pp => pp.Produto)
                               .FirstOrDefault();

                Console.WriteLine($"Produtos da promoção {promocao.Descricao}");
                foreach (var item in promocao.Produtos)
                {
                    Console.WriteLine(item.Produto);
                }

                //Endereço do Cliente
                var cliente = contexto.Clientes
                              .Include(c => c.Endereco)
                              .FirstOrDefault();
                Console.WriteLine($"Endereço do cliente {cliente.Nome}:");
                Console.WriteLine($"{cliente.Endereco.Rua}");

                //Compras do Produto
                var produto = contexto.Produtos
                              .Where(p => p.Id == 3002)
                              .Include(p => p.Compras)
                              .First();
                Console.WriteLine($"Compras do produto {produto.Nome}");
                foreach (var compra in produto.Compras)
                {
                    Console.WriteLine($"{compra.Quantidade} {compra.Produto.Unidade} de {compra.Produto.Nome} no valor de {compra.Preco}");
                }

                //Compras acima de 2 reais do Produto
                var p1 = contexto.Produtos
                         .Where(p => p.Id == 3002)
                         .FirstOrDefault();
                contexto.Entry(p1)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 3.0)
                .Load();
                Console.WriteLine($"Compras do produto {produto.Nome} com condicional");
                foreach (var compra in p1.Compras)
                {
                    Console.WriteLine($"{compra.Quantidade} {compra.Produto.Unidade} de {compra.Produto.Nome} no valor de {compra.Preco}");
                }
            }
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: AndersonIctus/Courses
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                //Acionando ao LOGGER !!
                SqlLoggerProvider.LogContext(contexto);

                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereco de Entrega: {cliente.EnderecoDeEntrega.Logradouro}");

                /////////////////////////////////////////////
                //Pegar as compras de um produto !!
                //var produto = contexto
                //    .Produtos
                //    .Where(p => p.Id == 3002)
                //    .Include(p => p.Compras)
                //    .FirstOrDefault();

                //Console.WriteLine("## Pegar as compras de um produto !!");
                //Console.WriteLine($"Mostrando as Compras do Produto: {produto.Nome}");
                //foreach (var item in produto.Compras)
                //{
                //    Console.WriteLine("\t" + item);
                //}

                /////////////////////////////////////////////
                //Pegar as compras acima de um valor para um produto !!
                var produto2 = contexto
                               .Produtos
                               .Where(p => p.Id == 3002)
                               .FirstOrDefault();

                contexto.Entry(produto2)
                .Collection(p => p.Compras)
                .Query()            //tranforma em IQueryable !!
                .Where(c => c.Preco > 10)
                .Load();

                Console.WriteLine("## Pegar as compras acima de um valor para um produto !!");
                Console.WriteLine($"Mostrando as Compras do Produto: {produto2.Nome}");
                foreach (var item in produto2.Compras)
                {
                    Console.WriteLine("\t" + item);
                }
            }
        }
コード例 #18
0
        private static void TestandoEstadosDeObjetos()
        {
            using (var context = new LojaContext())
            {
                //FOR BATCH OPERATIONS
                //context.ChangeTracker.AutoDetectChangesEnabled = false;

                //FOR UPDATE DATABASE MANUALLY
                //context.Database.Migrate();

                var produtos = context.Produtos.ToList();
                foreach (var p in produtos)
                {
                    Console.WriteLine(p);
                }

                ListEntitiesState(context.ChangeTracker.Entries());

                //var produto = context.Produtos.FirstOrDefault();
                //produto.Nome = produto.Nome + " - Editado";

                //ListEntitiesState(context.ChangeTracker.Entries());

                var novoProduto = new Produto()
                {
                    Nome          = "Produto Teste",
                    Categoria     = "Teste",
                    PrecoUnitario = 1.99
                };

                context.Produtos.Add(novoProduto);
                ListEntitiesState(context.ChangeTracker.Entries());
                context.Produtos.Remove(novoProduto);
                ListEntitiesState(context.ChangeTracker.Entries());

                var entry = context.Entry(novoProduto);

                Console.WriteLine("########################################");
                Console.WriteLine($"{entry.Entity.ToString()} - {entry.State}");
                Console.WriteLine("########################################");

                context.SaveChanges();

                ListEntitiesState(context.ChangeTracker.Entries());
            }
        }
コード例 #19
0
        private static void VerificadorDeEstados(LojaContext contexto)
        {
            // desliga o monitoramento, melhora performance
            //contexto.ChangeTracker.AutoDetectChangesEnabled = false;

            // código para gerar log SQL
            GerarLog(contexto);

            // limpar e adicionar registros no repositório
            IniciarRegistros();

            var produtos = contexto.Produtos.ToList();

            ExibeEntries(contexto.ChangeTracker.Entries(), "UNCHANGED");

            // estados: unchanged -> modified
            var p1 = produtos.First();

            p1.Nome = "Into The Wild";
            ExibeEntries(contexto.ChangeTracker.Entries(), "MODIFIED");

            //estados: added
            var novoProduto = new Produto()
            {
                Nome          = "Rocky Balboa",
                Categoria     = "Filmes",
                PrecoUnitario = 25.99
            };

            contexto.Produtos.Add(novoProduto);
            ExibeEntries(contexto.ChangeTracker.Entries(), "ADDED");

            //estado: detached
            contexto.Produtos.Remove(novoProduto);
            var entry = contexto.Entry(novoProduto);

            ExibeEntries(contexto.ChangeTracker.Entries(), "DETACHED");

            //estados: deleted
            contexto.Produtos.Remove(contexto.Produtos.First());
            ExibeEntries(contexto.ChangeTracker.Entries(), "DELETED");

            contexto.SaveChanges();
            ExibeEntries(contexto.ChangeTracker.Entries(), "UNCHANGED");
        }
コード例 #20
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var compra = new Compra();

                compra.Quantidade = 1000;
                compra.Produto    = contexto.Produtos.Where(p => p.Id == 11).FirstOrDefault();
                compra.Preco      = compra.Quantidade * compra.Produto.PrecoUnitario;

                contexto.Compras.Add(compra);
                contexto.SaveChanges();

                var cliente = contexto.Clientes.Include(c => c.EnderecoDeEntrega).FirstOrDefault();
                Console.WriteLine(cliente.EnderecoDeEntrega.Logradouro);

                var produto = contexto
                              .Produtos
                              .Where(p => p.Id == 11)
                              .FirstOrDefault();

                //Construção de uma consulta, aplicando a condição num item de uma entidade secundaria
                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 10)
                .Load();

                foreach (var item in produto.Compras)
                {
                    Console.WriteLine($"{item.Preco}, {item.Quantidade}");
                }
            }


            Console.ReadLine();
        }
コード例 #21
0
        private static void EstadosDoEntity()
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();

                loggerFactory.AddProvider(SqlLoggerProvider.Create());


                var produtos = contexto.Produtos.ToList();

                ExibeEntries(contexto.ChangeTracker.Entries());

                var p = new Produto()
                {
                    Nome          = "Lata",
                    Categoria     = "Alimentos",
                    PrecoUnitario = 11.20
                };

                contexto.Add(p);

                p.Nome = "novo";

                contexto.Remove(p);

                var entry = contexto.Entry(p);
                Console.WriteLine("\n\n " + entry.Entity.ToString() + " - " + entry.State);

                //var p = contexto.Produtos.First();
                //contexto.Remove(p);

                //ExibeEntries(contexto.ChangeTracker.Entries());

                //contexto.SaveChanges();

                //ExibeEntries(contexto.ChangeTracker.Entries());
            }
        }
コード例 #22
0
ファイル: Program.cs プロジェクト: eliasmichalczuk/study
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var cliente = contexto
                              .Clientes
                              .Include(c => c.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"endereco de entrega: {cliente.EnderecoDeEntrega.Logradouro}");

                var produto = contexto
                              .Produtos
                              //.Include(p => p.Compras)
                              .Where(p => p.Id == 9004)
                              .FirstOrDefault();


                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()    //funciona todos metodos de extensao Iqueryable
                .Where(c => c.Preco > 10)
                .Load();

                Console.WriteLine($"compras do produto {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }

            Console.ReadKey();
        }
コード例 #23
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var produtos = contexto.Produtos.ToList();


                ExibirEntries(contexto.ChangeTracker.Entries());

                var novoProduto = new Produto()
                {
                    Nome      = "sabão em pó",
                    Categoria = "Limpeza",
                    Preco     = 5.00
                };


                contexto.Produtos.Add(novoProduto);
                ExibirEntries(contexto.ChangeTracker.Entries());
                contexto.Produtos.Remove(novoProduto);

                ExibirEntries(contexto.ChangeTracker.Entries());

                // contexto.SaveChanges();

                var entry = contexto.Entry(novoProduto);
                Console.WriteLine("\n\n" + entry.Entity.ToString() + " - " + entry.State);

                ExibirEntries(contexto.ChangeTracker.Entries());
            }
            Console.ReadLine();
        }
コード例 #24
0
        private static void SelecionandoItemEmColecoesRelacionadas()
        {
            using (var contexto = new LojaContext())
            {
                var loggerFactory = contexto.GetInfrastructure <IServiceProvider>().GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var produto = contexto
                              .Produtos
                              .Include(p => p.Compras)
                              .FirstOrDefault();

                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.PrecoTotal > 10)
                .Load();

                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
            }
        }
コード例 #25
0
        static void Main(string[] args)
        {
            using (var contexto2 = new LojaContext())
            {
                var serviceProvider = contexto2.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                ///Esse .include() se chama "Carregamento Implícito"
                var cliente = contexto2
                              .Clientes
                              .Include(x => x.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereço de entrega: {cliente.EnderecoDeEntrega.Logradouro}");

                var produto = contexto2
                              .Produtos
                              .FirstOrDefault(x => x.Id == 8);

                ///Gerando uma pesquisa em que, o where está sendo feito sobre
                ///a entidade do join e não na principal
                ///Esse jeito se chama "Carregamento explícito"
                contexto2.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco > 10)
                .Load();

                Console.WriteLine($"Mostrando as compras do produto {produto.Nome}");
                foreach (var item in produto.Compras)
                {
                    Console.WriteLine("\t" + item);
                }
            }
        }
コード例 #26
0
        static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                var serviceProvider = contexto.GetInfrastructure <IServiceProvider>();
                var loggerFactory   = serviceProvider.GetService <ILoggerFactory>();
                loggerFactory.AddProvider(SqlLoggerProvider.Create());

                var cliente = contexto.Clientes
                              .Include(e => e.EnderecoDeEntrega)
                              .FirstOrDefault();

                Console.WriteLine($"Endereço de entrega: {cliente.EnderecoDeEntrega.Logradouro}");



                var produto = contexto
                              .Produtos
                              //.Include(p => p.Compras)
                              .Where(p => p.Id == 3002)
                              .FirstOrDefault();



                contexto.Entry(produto)
                .Collection(p => p.Compras)
                .Query()
                .Where(c => c.Preco <= 11).Load();



                Console.WriteLine($"\n\tCompras do produto: {produto.Nome}\n");

                foreach (var item in produto.Compras)
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine("=============");

                //var produtos = contexto.Compras
                //    .Include(c => c.Produto)
                //    .Where(p => p.Preco <= 10);

                //foreach (var item in produtos)
                //{
                //    Console.WriteLine(item.Produto);
                //}

                //var produtoCompra = contexto.Produtos.Where(p => p.Id == 3002).FirstOrDefault();

                //contexto.Compras.Add(new Compra(25, produtoCompra));

                //ExibeEntries(contexto.ChangeTracker.Entries());
                //contexto.SaveChanges();
                //ExibeEntries(contexto.ChangeTracker.Entries());
            }


            Console.WriteLine("Done");
            Console.ReadKey();
        }