示例#1
0
        private static void ListaUltimo10AtoresCadastrados()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                //Modificando a shadowProperty
                //var ator = new Ator();
                //ator.PrimeiroNome = "Tom";
                //ator.UltimoNome = "Hanks";
                //contexto.Entry(ator).Property("last_update").CurrentValue = DateTime.Now;
                //contexto.Add(ator);

                ///Utilizando a shadow property em query
                ///O EF está dentro do using Microsoft.EntityFrameworkCore;
                var atores = contexto.Atores
                             .OrderByDescending(x => EF.Property <DateTime>(x, "last_update"))
                             .Take(10);

                foreach (var item in atores)
                {
                    Console.WriteLine(item + " - " + contexto.Entry(item).Property("last_update").CurrentValue);
                }

                //contexto.SaveChanges();
            }
        }
示例#2
0
        private static void ModeloDeDadosDoEntity()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var filme = new Filme
                {
                    Titulo        = "Casino Royale",
                    Duracao       = 120,
                    AnoLancamento = "2000",
                    Classificacao = ClassificacaoIndicativa.MaioresQue14,
                    IdiomaFalado  = contexto.Idiomas.First()
                };

                contexto.Entry(filme).Property("last_update").CurrentValue = DateTime.Now;

                contexto.Filmes.Add(filme);

                contexto.SaveChanges();

                var filmeInserido = contexto.Filmes.First(f => f.Titulo == "Casino Royale");

                Console.WriteLine(filmeInserido.Classificacao);
            }

            Console.ReadLine();
        }
示例#3
0
        private static void RecuperandoValoresDaPropriedadeShadowProperty()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var ator = contexto.Atores.First();

                Console.WriteLine(ator + " " + contexto.Entry(ator).Property("last_update").CurrentValue);
            }
        }
        static void Main2(string[] args)
        {
            using (var context = new AluraFilmesContexto())
            {
                context.LogSQLToConsole();
                //chama o metodo de logar o sql do entity
                //foreach (var ator in context.Atores)
                //{
                //    System.Console.WriteLine($"ator: {ator}");
                //}
                var ator = new Ator();
                ator.PrimeiroNome = "Tom";
                ator.UltimoNome   = "Hanks";
                //como setar valor de uma shaddow property se nao é definido no builder
                //context.Entry(actor).Property("last_update").CurrentValue = DateTime.Now;
                context.Atores.Add(ator);
                context.SaveChanges();
                //recuperar valores de shadow properties
                Console.WriteLine(context.Entry(ator).Property("last_update"));

                //listar os dez primeiros atores ordenados por last update de forma decrescente
                var atores = context.Atores//query em cima do conjunto de atores
                             .OrderByDescending(a => EF.Property <DateTime>(a, "last_update"))
                             .Take(10);
                foreach (var ator1 in atores)
                {
                    Console.WriteLine(ator1 + " " + context.Entry(ator1).Property("last_update").CurrentValue);
                }
                //para atribuir:
                //contexto.Entry(aluno)
                //    .Property("nota_inicial")
                //    .CurrentValue = 8;

                //para recuperar:
                //var nota = contexto.Entry(aluno)
                //    .Property("nota_inicial")
                //    .CurrentValue;
            }
        }
示例#5
0
        private static void Lista10AtoresModificadosRecentemente()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var atores = contexto.Atores
                             .OrderByDescending(a => EF.Property <DateTime>(a, "last_update"))
                             .Take(10);

                foreach (var ator in atores)
                {
                    Console.WriteLine("{0} - {1}", ator, contexto.Entry(ator).Property("last_update").CurrentValue);
                }
            }
        }
        public static void ImprimeAtores()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var atores = contexto.Atores
                             .OrderBy(a => EF.Property <DateTime>(a, "last_update"))
                             .Take(10);

                foreach (var ator in atores)
                {
                    Console.WriteLine(ator + " - " + contexto.Entry(ator).Property("last_update").CurrentValue);
                }
            }
        }
示例#7
0
        private static void CadastroDeAtor()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                Ator ator = new Ator()
                {
                    PrimeiroNome = "Will",
                    UltimoNome   = "Smith"
                };
                contexto.Entry(ator).Property("last_update").CurrentValue = DateTime.Now;

                contexto.Atores.Add(ator);
                contexto.SaveChanges();
            }
        }
示例#8
0
        private static void ExibeFilmeAtor()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                foreach (var item in contexto.Elenco)
                {
                    var entidade   = contexto.Entry(item);
                    var filmId     = entidade.Property("film_id").CurrentValue;
                    var actorId    = entidade.Property("actor_id").CurrentValue;
                    var lastUpdate = entidade.Property("last_update").CurrentValue;

                    Console.WriteLine($"Filme {filmId}, Ator {actorId}, Last Updatde {lastUpdate}");
                }
            }
        }
示例#9
0
        private static void ShadowPropertiesLINQOrderByDescending()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                // Listar os 10 atores modificados recentemente
                var atores = contexto.Atores
                             .OrderByDescending(a => EF.Property <DateTime>(a, "last_update"))
                             .Take(10);

                foreach (var ator in atores)
                {
                    Console.WriteLine(ator);
                    Console.WriteLine(contexto.Entry(ator).Property("last_update").CurrentValue);
                }
            }

            Console.ReadLine();
        }
示例#10
0
        private static void DefinindoShadowProperties()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var ator = new Ator
                {
                    PrimeiroNome = "Tom",
                    UltimoNome   = "Hanks"
                };

                contexto.Entry(ator).Property <DateTime>("last_update").CurrentValue = DateTime.Now;

                contexto.Atores.Add(ator);

                contexto.SaveChanges();
            }

            Console.ReadLine();
        }
示例#11
0
        private static void ExibeFilmeECategoia()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var filme = contexto.Filmes
                            .Include(f => f.Categorias)
                            .ThenInclude(c => c.Categoria)
                            .First();

                Console.WriteLine(filme);

                foreach (var item in filme.Categorias)
                {
                    var categoriaId   = item.Categoria.ID;
                    var categoriaNome = item.Categoria.Nome;
                    var lastUpdate    = contexto.Entry(item.Categoria).Property("last_update").CurrentValue;
                    Console.WriteLine($"Categoria: {categoriaNome} (ID: {categoriaId}) - UP: {lastUpdate}");
                    //Console.WriteLine(item.Categoria);
                }
            }
        }
示例#12
0
        private static void DesafioMapeamentoFilmesCategorias()
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var categoria = contexto.Categorias
                                .Include(c => c.Filmes)
                                .ThenInclude(cf => cf.Filme)
                                .First();

                Console.WriteLine(categoria);
                Console.WriteLine(contexto.Entry(categoria).Property <DateTime>("last_update").CurrentValue);
                Console.WriteLine("Filmes:");

                foreach (var item in categoria.Filmes)
                {
                    Console.WriteLine(item.Filme);
                }
            }

            Console.ReadLine();
        }
示例#13
0
        public static void Main(string[] args)
        {
            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                //var ator1 = new Ator { PrimeiroNome = "Emma", UltimoNome = "Watson" };
                //var ator2 = new Ator { PrimeiroNome = "Emma", UltimoNome = "Watson" };
                //contexto.Atores.AddRange(ator1, ator2);
                //contexto.SaveChanges();
                //objetivo é não ser possível adicionar dois atores com mesmo nome
                //utilizando alternate key no ator config

                var emmaWatson = contexto.Atores
                                 .Where(a => a.PrimeiroNome == "Emma" && a.UltimoNome == "Watson");
                Console.WriteLine($"Total de atores encontrados: {emmaWatson.Count()}.");

                contexto.LogSQLToConsole();

                var idioma = new Idioma {
                    Nome = "English"
                };

                var filme = new Filme();
                filme.Titulo        = "Cassino Royale";
                filme.Duracao       = 120;
                filme.AnoLancamento = "2000";
                filme.Classificacao = ClassificacaoIndicativa.MaioresQue14;
                filme.IdiomaFalado  = idioma;
                contexto.Entry(filme).Property("last update").CurrentValue = DateTime.Now;
                //objetivo é nao ser possível adicionar filme com classificao com string qualquer
                var filmess = contexto.Filmes.First(f => f.Titulo == "Cassino Royale");
                Console.WriteLine(filmess.Classificacao.ParaString());

                //teste de conversao de e para enumerados
                var m10 = ClassificacaoIndicativa.MaioresQue18;
                Console.WriteLine(m10.ParaString());

                Console.WriteLine("G".ParaValor());
            }

            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                Console.WriteLine("Clientes");
                foreach (var cliente in contexto.Clientes)
                {
                    Console.WriteLine(cliente);
                }

                Console.WriteLine("\nFuncionários");
                foreach (var func in contexto.Funcionarios)
                {
                    Console.WriteLine(func);
                }
            }

            using (var contexto = new AluraFilmesContexto())
            {
                contexto.LogSQLToConsole();

                var atoresMaisAtuantes = contexto.Atores
                                         .Include(a => a.Filmografia)
                                         .OrderByDescending(a => a.Filmografia.Count)
                                         .Take(5);

                var sql = @"select top 5 a.first_name, a.last_name, count(*) as total
                            from actor a
                                inner join film_actor fa on fa.actor_id = a.actor_id
                            group by a.first_name, a.last_name
                            order by total desc";
                atoresMaisAtuantes = contexto.Atores.FromSql(sql);

                foreach (var ator in atoresMaisAtuantes)
                {
                    Console.WriteLine($"{ator.PrimeiroNome} {ator.Filmografia} filmes");
                }
            }
        }