static void Cleanup()
 {
     using (var context = new EFRecipesEntities())
     {
         context.ExecuteStoreCommand("delete from chapter3.associatesalary");
         context.ExecuteStoreCommand("delete from chapter3.associate");
     }
 }
        static void RunExample()
        {
            using (var context = new EFRecipesEntities())
            {
                var assoc1 = new Associate {
                    Name = "Janis Roberts"
                };
                var assoc2 = new Associate {
                    Name = "Kevin Hodges"
                };
                var assoc3 = new Associate {
                    Name = "Bill Jordan"
                };
                var salary1 = new AssociateSalary {
                    Salary = 39500M, SalaryDate = DateTime.Parse("8/14/09")
                };
                var salary2 = new AssociateSalary {
                    Salary = 41900M, SalaryDate = DateTime.Parse("2/5/10")
                };
                var salary3 = new AssociateSalary {
                    Salary = 33500M, SalaryDate = DateTime.Parse("10/08/09")
                };
                assoc2.AssociateSalaries.Add(salary1);
                assoc2.AssociateSalaries.Add(salary2);
                assoc3.AssociateSalaries.Add(salary3);
                context.Associates.AddObject(assoc1);
                context.Associates.AddObject(assoc2);
                context.Associates.AddObject(assoc3);
                context.SaveChanges();
            }

            using (var context = new EFRecipesEntities())
            {
                Console.WriteLine("Using LINQ...");
                var allHistory = from a in context.Associates
                                 from ah in a.AssociateSalaries.DefaultIfEmpty()
                                 orderby a.Name
                                 select new
                {
                    Name   = a.Name,
                    Salary = (decimal?)ah.Salary,
                    Date   = (DateTime?)ah.SalaryDate
                };
                Console.WriteLine("Associate Salary History");
                foreach (var history in allHistory)
                {
                    if (history.Salary.HasValue)
                    {
                        Console.WriteLine("{0} Salary on {1} was {2}", history.Name, history.Date.Value.ToShortDateString(), history.Salary.Value.ToString("C"));
                    }
                    else
                    {
                        Console.WriteLine("{0} --", history.Name);
                    }
                }
            }

            using (var context = new EFRecipesEntities())
            {
                Console.WriteLine("\nUsing Entity SQL...");
                var esql       = @"select a.Name, h.Salary, h.SalaryDate
                             from Associates as a outer apply a.AssociateSalaries as h order by a.Name";
                var allHistory = context.CreateQuery <DbDataRecord>(esql);
                foreach (var history in allHistory)
                {
                    if (history["Salary"] != DBNull.Value)
                    {
                        Console.WriteLine("{0} Salary on {1:d} was {2:c}", history["Name"], history["SalaryDate"], history["Salary"]);
                    }
                    else
                    {
                        Console.WriteLine("{0} --", history["Name"]);
                    }
                }
            }
            Console.WriteLine("Press <enter> to continue...");
            Console.ReadLine();
        }