Пример #1
0
        public void PerformanceTest()
        {
            CodeFirst.MenuContext contexto = new CodeFirst.MenuContext();
            // Toma como 15 minutos en crearse.
            for (int i = 0; i < 5000; i++)
            {
                CodeFirst.Menu m = new CodeFirst.Menu()
                {
                    Id = Guid.NewGuid()
                };
                for (int j = 0; j < 5; j++)
                {
                    CodeFirst.Cafe c = new CodeFirst.Cafe()
                    {
                        Grano  = "g",
                        Menu   = m,
                        MenuId = m.Id,
                        Id     = Guid.NewGuid(),
                    };
                    contexto.Cafes.Add(c);
                }
                contexto.Menus.Add(m);
            }
            contexto.SaveChanges();
            var late = contexto.Cafes.ToList().Where(l => l.Menu.Id.ToString().Contains("2") && l.MenuId != null);

            Console.WriteLine(late.Count());
            var fast = contexto.Cafes.Where(l => l.Menu.Id.ToString().Contains("2") && l.MenuId != null).ToList();

            Console.WriteLine(fast.Count());
        }
Пример #2
0
        static void Main(string[] args)
        {
            CodeFirst.MenuContext contexto = new CodeFirst.MenuContext();

            Guid g = Guid.NewGuid();

            CodeFirst.Te te = new CodeFirst.Te()
            {
                Id       = Guid.NewGuid(),
                Aroma    = "Manzanilla" + new Random().Next(1, 100).ToString(),
                Textura  = "Suave" + new Random().Next(1, 100).ToString(),
                Infusion = "Manzanilla" + new Random().Next(1, 100).ToString(),
                Menu     = new CodeFirst.Menu()
                {
                    Id = g
                },
                MenuId = g,
            };
            contexto.Tes.Add(te);

            var objAModificar = contexto.Cafes.FirstOrDefault();

            objAModificar.Grano  = "Modicar" + new Random().Next(1, 100).ToString();
            objAModificar.MenuId = g;

            var teABorrar = contexto.Tes.FirstOrDefault();

            contexto.Tes.Remove(teABorrar);

            // Los estados varian para sus funciones
            // Added crea uno nuevo e intenta que sea con un nuevo ID
            // Deleted Remueve un objeto que este dentro de la persistencia
            // Detached Remueve un objeto para que no sea agregado, si esta guardado no hace nada
            // Modified sobre escribe los datos
            // Unchanged no hace nada, es el estado por defecto
            contexto.Entry(teABorrar).State = System.Data.Entity.EntityState.Unchanged;

            contexto.SaveChanges();


            foreach (var c in contexto.Tes)
            {
                Console.WriteLine($"Id:{c.Id} Infusion:{c.Infusion} Textura:{c.Textura} Amora:{c.Aroma}");
            }
            Console.ReadKey();

            // LINQ Examples

            // LINQ Explicito
            var q  = from cafe in contexto.Cafes.ToList() select cafe;
            var qq = from cafe in q where cafe.Grano != null select cafe;

            // Filtra pero no llama a la base de datos solo genera querys
            var query = from cafe in contexto.Cafes
                        where cafe.Grano != null
                        select cafe;
            var le = contexto.Cafes.Where(cafe => cafe.Grano != null);

            // Llama primero DB luego filtra
            var query2 = from cafe in contexto.Cafes.ToList()
                         where cafe.Grano != null
                         select cafe;
            var le2 = contexto.Cafes.ToList().Where(cafe => cafe.Grano != null);

            // Filtra y luego llama a la base de datos
            var query3 = (from cafe in contexto.Cafes
                          where cafe.Grano != null
                          select cafe).ToList();
            var le3 = contexto.Cafes.Where(cafe => cafe.Grano != null).ToList();

            // Multiples linq
            var queryextendido = from ilegible in (from m in (from menu in contexto.Menus
                                                              where menu.Id != null &&
                                                              menu.Id.ToString().Contains("3")
                                                              select menu)
                                                   where m.Id.ToString().Contains("2")
                                                   select m)
                                 where ilegible.Id.ToString().Contains("1")
                                 select ilegible;
            var leextendido = contexto.Menus.
                              Where(menu => menu.Id != null && menu.Id.ToString().Contains("3")).
                              Where(m => m.Id.ToString().Contains("2")).
                              Where(ilegible => ilegible.Id.ToString().Contains("1"));

            var select = from menu in contexto.Menus
                         select new CodeFirst.Cafe()
            {
                Id = Guid.NewGuid(), Menu = menu, MenuId = menu.Id
            };

            var ls = contexto.Menus.Select(menu => new CodeFirst.Cafe()
            {
                Id = Guid.NewGuid(), Menu = menu, MenuId = menu.Id
            });

            //for (int i = 0; i < 10000; i++)
            //{
            //    contexto.Menus.Add(new CodeFirst.Menu() { Id = Guid.NewGuid() });
            //}
            //contexto.SaveChanges();
            // LINQ Lineal o de Extension.
        }