Example #1
0
        static void SqlInjection()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            db.Departamentos.AddRange(
                new Curso.Domain.Departamento
            {
                Descricao = "Departamento 01"
            },
                new Curso.Domain.Departamento
            {
                Descricao = "Departamento 02"
            });
            db.SaveChanges();

            //var descricao = "Teste ' or 1='1";
            //db.Database.ExecuteSqlRaw("update departamentos set descricao='AtaqueSqlInjection' where descricao={0}",descricao);
            //db.Database.ExecuteSqlRaw($"update departamentos set descricao='AtaqueSqlInjection' where descricao='{descricao}'");
            foreach (var departamento in db.Departamentos.AsNoTracking())
            {
                Console.WriteLine($"Id: {departamento.Id}, Descricao: {departamento.Descricao}");
            }
        }
Example #2
0
        static void CarregamentoExplicito()
        {
            using var db = new Curso.Data.ApplicationContext();
            SetupTiposCarregamentos(db);

            var departamentos = db.Departamentos.ToList();

            foreach (var departamento in departamentos)
            {
                if (departamento.Id == 2)
                {
                    //db.Entry(departamento).Collection("Funcionarios").Load();
                    //db.Entry(departamento).Collection(p=>p.Funcionarios).Load();
                    db.Entry(departamento).Collection(p => p.Funcionarios).Query().Where(p => p.Id > 2).ToList();
                }

                Console.WriteLine("---------------------------------------");
                Console.WriteLine($"Departamento: {departamento.Descricao}");

                if (departamento.Funcionarios?.Any() ?? false)
                {
                    foreach (var funcionario in departamento.Funcionarios)
                    {
                        Console.WriteLine($"\tFuncionario: {funcionario.Nome}");
                    }
                }
                else
                {
                    Console.WriteLine($"\tNenhum funcionario encontrado!");
                }
            }
        }
Example #3
0
        static void ScriptGeralDoBancoDeDados()
        {
            using var db = new Curso.Data.ApplicationContext();
            var script = db.Database.GenerateCreateScript();

            Console.WriteLine(script);
        }
Example #4
0
        static void DriblandoSqlInjection()
        {
            using var db = new Curso.Data.ApplicationContext();
            var descricao = "nova";

            db.Database.ExecuteSqlRaw("UPDATE departamentos SET descricao='{0}' WHERE Id=1", descricao);
        }
Example #5
0
        //Neste tipo de carregamento, é recomendável utilizar para carregamento de poucos campos
        //pois o left join carrega a tabela toda de funcionarios, podendo acarretar lentidão
        static void CarregamentoAdiantado()
        {
            using var db = new Curso.Data.ApplicationContext();
            SetupTiposCarregamentos(db);

            //Toda vez que for carregar departamento, será carregado também funcionários.Todos funcionários são carregados
            var departamentos = db.Departamentos
                                .Include(p => p.Funcionarios);

            foreach (var departamento in departamentos)
            {
                Console.WriteLine("---------------------------------");
                Console.WriteLine($"Departamento: {departamento.Descricao}");

                if (departamento.Funcionarios?.Any() ?? false)
                {
                    foreach (var funcionario in departamento.Funcionarios)
                    {
                        Console.WriteLine($"\tFuncionario: {funcionario.Nome}");
                    }
                }
                else
                {
                    Console.WriteLine($"\tNenhum funcionario encontrado!");
                }
            }
        }
Example #6
0
        static void CarregamentoLento()
        {
            using var db = new Curso.Data.ApplicationContext();
            SetupTiposCarregamentos(db);

            //db.ChangeTracker.LazyLoadingEnabled = false;

            var departamentos = db
                                .Departamentos
                                .ToList();

            foreach (var departamento in departamentos)
            {
                Console.WriteLine("---------------------------------------");
                Console.WriteLine($"Departamento: {departamento.Descricao}");

                if (departamento.Funcionarios?.Any() ?? false)
                {
                    foreach (var funcionario in departamento.Funcionarios)
                    {
                        Console.WriteLine($"\tFuncionario: {funcionario.Nome}");
                    }
                }
                else
                {
                    Console.WriteLine($"\tNenhum funcionario encontrado!");
                }
            }
        }
Example #7
0
        static void DadosSensiveis()
        {
            using var db = new Curso.Data.ApplicationContext();

            var descricao     = "Departamento";
            var departamentos = db.Departamentos.Where(p => p.Descricao == descricao).ToArray();
        }
Example #8
0
        static void Esquema()
        {
            using var db = new Curso.Data.ApplicationContext();

            var script = db.Database.GenerateCreateScript();

            Console.WriteLine(script);
        }
Example #9
0
        //Resolve o problema de se usa mais de um contexto e força a criação da base
        static void GapDoEnsureCreatedComMultiplosContextos()
        {
            using var db1 = new Curso.Data.ApplicationContext();
            using var db2 = new Curso.Data.ApplicatioContextCidade();

            var databaseCreator = db2.GetService <IRelationalDatabaseCreator>();

            databaseCreator.CreateTables();
        }
Example #10
0
        static void PropagarDados()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            var script = db.Database.GenerateCreateScript();

            Console.WriteLine(script);
        }
Example #11
0
        static void GapDoEnsureCreated()
        {
            using var db1 = new Curso.Data.ApplicationContext();
            //using var db2 = new Curso.Data.ApplicationContextCidade();

            db1.Database.EnsureCreated();
            //db2.Database.EnsureCreated();

            //var databaseCreator = db2.GetService<IRelationalDatabaseCreator>();
            //databaseCreator.CreateTables();
        }
Example #12
0
        static void MigracoesJaAplicadas()
        {
            using var db = new Curso.Data.ApplicationContext();

            var migracoes = db.Database.GetAppliedMigrations();

            Console.WriteLine($"Total: {migracoes.Count()}");

            foreach (var migracao in migracoes)
            {
                Console.WriteLine($"Migração: {migracao}");
            }
        }
Example #13
0
        static void SqlInjection()
        {
            using var db = new Curso.Data.ApplicationContext();
            EnsureDeleted();
            EnsureDeleted();

            var descricao = "Teste ' or 1='1";

            db.Database.ExecuteSqlRaw($"UPDATE departamentos SET descricao='AtaqueInjection' WHERE descricao='{descricao}'");
            foreach (var departamento in db.Departamentos.AsNoTracking())
            {
                //Console.WriteLine($"id: {departamento.Id}, Descricao: {departamento.Name}");
            }
        }
Example #14
0
        static void FiltroGlobal()
        {
            using var db = new Curso.Data.ApplicationContext();
            Setup(db);

            var departamentos = db.Departamentos.Where(p => p.Id > 0).ToList();

            foreach (var departamento in departamentos)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                //Console.BackgroundColor = ConsoleColor.DarkBlue;
                Console.WriteLine($"Descrição: {departamento.Descricao} \t Excluido: {departamento.Excluido}");
            }
        }
Example #15
0
        static void HealthCheckBancoDeDados()
        {
            using var db = new Curso.Data.ApplicationContext();
            var canConnect = db.Database.CanConnect();

            if (canConnect)
            {
                Console.WriteLine("Posso me conectar");
            }
            else
            {
                Console.WriteLine("Não posso me conectar");
            }
        }
Example #16
0
        static void HealthCheckBD()
        {
            using var db = new Curso.Data.ApplicationContext();
            var canConnect = db.Database.CanConnect();

            if (canConnect)
            {
                Console.WriteLine("Conexão Liberada");
            }
            else
            {
                Console.WriteLine("Conexão não Liberada");
            }
        }
Example #17
0
        static void CriarStoredProcedureDeConsulta()
        {
            var criarDepartamento = @"
            CREATE OR ALTER PROCEDURE GetDepartamentos
            @Descricao VARCHAR(50)
            AS
            BEGIN 
                SELECT * FROM Departamentos WHERE Descricao LIKE @Descricao + '%'
            END
            ";

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

            db.Database.ExecuteSqlRaw(criarDepartamento);
        }
Example #18
0
        static void ConsultaCoTag()
        {
            using var db = new Curso.Data.ApplicationContext();
            Setup(db);

            var departamentos = db.Departamentos
                                .TagWith("Estou enviando um comentário para o servidor")
                                .ToList();

            foreach (var departamento in departamentos)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"Descrição: {departamento.Descricao}");
            }
        }
Example #19
0
        static void EntendendoConsulta_1ToN_Nto1()
        {
            using var db = new Curso.Data.ApplicationContext();
            Setup(db);

            var funcionarios = db.Funcionarios
                               .Include(p => p.Departamento)
                               .ToList();

            foreach (var funcionario in funcionarios)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"\t Nome: {funcionario.Nome} / Departamento: {funcionario.Departamento.Descricao}");
            }
        }
Example #20
0
        static void HabilitandoBatchSize()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            for (int i = 0; i < 50; i++)
            {
                db.Departamentos.Add(new Departamento
                {
                    Descricao = $"Departamento {i}"
                });
            }

            db.SaveChanges();
        }
Example #21
0
        static void ConsultaInterpolada()
        {
            using var db = new Curso.Data.ApplicationContext();
            Setup(db);

            var id            = 1;
            var departamentos = db.Departamentos
                                .FromSqlInterpolated($"SELECT * FROM Departamentos WITH(NOLOCK) WHERE Id>{id}")
                                .ToList();

            foreach (var departamento in departamentos)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"Descrição: {departamento.Descricao}");
            }
        }
Example #22
0
        static void ConsultaParametrizada()
        {
            using var db = new Curso.Data.ApplicationContext();
            Setup(db);

            var id            = 0;
            var departamentos = db.Departamentos
                                .FromSqlRaw("SELECT * FROM Departamentos WITH(NOLOCK) WHERE Id > {0}", id)
                                .Where(p => !p.Excluido)
                                .ToList();

            foreach (var departamento in departamentos)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"Descrição: {departamento.Descricao}");
            }
        }
Example #23
0
        static void ExecutarEstrategiaResiliencia()
        {
            using var db = new Curso.Data.ApplicationContext();

            var strategy = db.Database.CreateExecutionStrategy();

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

                db.Departamentos.Add(new Departamento {
                    Descricao = "Transacao"
                });
                db.SaveChanges();

                transaction.Commit();
            });
        }
Example #24
0
        static void ExecuteSql()
        {
            //Primeira opçao
            using var db = new Curso.Data.ApplicationContext();
            using (var cmd = db.Database.GetDbConnection().CreateCommand()){
                cmd.CommandText = "SELECT 1";
                cmd.ExecuteNonQuery();
            }

            //Segunda opção
            var descricao = "TESTE";

            db.Database.ExecuteSqlRaw("UPDATE departamentos SET descricao={0} WHERE ID=1", descricao);

            //Terceira Opçao
            db.Database.ExecuteSqlInterpolated($"UPDATE departamentos SET descricao={descricao} WHERE ID=1");
        }
Example #25
0
        static void Setup(Curso.Data.ApplicationContext db)
        {
            if (db.Database.EnsureCreated())
            {
                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 = "Icaro Henrique",
                            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 = "Patrizia Mastrodonato",
                            CPF  = "88888888811",
                            RG   = "3100062"
                        },
                        new Curso.Domain.Funcionario
                        {
                            Nome = "Bruce Wayne",
                            CPF  = "77777777711",
                            RG   = "1100062"
                        }
                    }
                });

                db.SaveChanges();
                db.ChangeTracker.Clear();
            }
        }
Example #26
0
        static void ConsultaViaProcedure()
        {
            using var db = new Curso.Data.ApplicationContext();

            var dep = "Departamento";

            var departamentos =
                db.Departamentos
                //.FromSqlRaw("execute GetDepartamentos @p0", "Departamento")
                .FromSqlInterpolated($"execute GetDepartamentos {dep}")
                .ToList();

            foreach (var departamento in departamentos)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"Descrição: {departamento.Descricao}");
            }
        }
Example #27
0
        static void ConversorCustomizado()
        {
            using var db = new Curso.Data.ApplicationContext();
            db.Database.EnsureDeleted();
            db.Database.EnsureCreated();

            db.Conversores.Add(
                new Conversor
            {
                Status = Status.Devolvido,
            }
                );

            db.SaveChanges();

            var conversorEmAnalise = db.Conversores.AsNoTracking().FirstOrDefault(p => p.Status == Status.Analise);
            var conversorDevolvido = db.Conversores.AsNoTracking().FirstOrDefault(p => p.Status == Status.Devolvido);
        }
Example #28
0
        static void CriarStoredProcedure()
        {
            var criarDepartamento = @"
            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(criarDepartamento);
        }
Example #29
0
        static void CarregamentoExplicito()
        {
            using var db = new Curso.Data.ApplicationContext();
            SetupTiposCarregamentos(db);

            //Toda vez que for carregar departamento, será carregado também funcionários.Todos funcionários são carregados
            var departamentos = db.Departamentos.ToList();

            foreach (var departamento in departamentos)
            {
                Console.WriteLine("---------------------------------");
                Console.WriteLine($"Departamento: {departamento.Descricao}");

                if (departamento.Id == 2)
                {
                    db.Entry(departamento).Collection(p => p.Funcionarios).Query().Where(p => p.Id > 2).ToList();
                }
            }
        }
Example #30
0
        static void ExecuteSQL()
        {
            using var db = new Curso.Data.ApplicationContext();

            // Primeira Opcao
            using (var cmd = db.Database.GetDbConnection().CreateCommand())
            {
                cmd.CommandText = "SELECT 1";
                cmd.ExecuteNonQuery();
            }

            // Segunda Opcao
            var descricao = "TESTE";

            db.Database.ExecuteSqlRaw("update departamentos set descricao={0} where id=1", descricao);

            //Terceira Opcao
            db.Database.ExecuteSqlInterpolated($"update departamentos set descricao={descricao} where id=1");
        }