private static void SelectEmployeesWithoutUsingIncludeMethod()
 {
     var db = new TelerikAcademyDb();
     var employees = db.Employees;
     foreach (var employee in employees)
     {
         Console.WriteLine("Name: {0}, Department: {1}, Town: {2}",
             employee.FirstName + " " + employee.LastName,
             employee.Department.Name,
             employee.Address.Town.Name);
     }
 }
        private static void ProfileQueryWithSingleToListUsing()
        {
            using (var db = new TelerikAcademyDb())
            {
                var employees = db.Employees
                                  .Select(e => e.Address)
                                  .Select(e => e.Town)
                                  .Where(t => t.Name == "Sofia")
                                  .ToList();

                Console.WriteLine("Employees Count: {0}", employees.Count);
            }
        }
        private static void SelectEmployeesUsingIncludeMethod()
        {
            using (var db = new TelerikAcademyDb())
            {
                var employees = db.Employees.Include("Department").Include("Address.Town");
                foreach (var employee in employees)
                {
                    Console.WriteLine("Name: {0}, Department: {1}, Town: {2}",
                        employee.FirstName + " " + employee.LastName,
                        employee.Department.Name,
                        employee.Address.Town.Name);
                }
            }

            // Executed SQL Query

            //SELECT 
            //[Extent1].[EmployeeID] AS [EmployeeID], 
            //[Extent1].[FirstName] AS [FirstName], 
            //[Extent1].[LastName] AS [LastName], 
            //[Extent1].[MiddleName] AS [MiddleName], 
            //[Extent1].[JobTitle] AS [JobTitle], 
            //[Extent1].[DepartmentID] AS [DepartmentID], 
            //[Extent1].[ManagerID] AS [ManagerID], 
            //[Extent1].[HireDate] AS [HireDate], 
            //[Extent1].[Salary] AS [Salary], 
            //[Extent1].[AddressID] AS [AddressID], 
            //[Extent2].[DepartmentID] AS [DepartmentID1], 
            //[Extent2].[Name] AS [Name], 
            //[Extent2].[ManagerID] AS [ManagerID1], 
            //[Extent3].[AddressID] AS [AddressID1], 
            //[Extent3].[AddressText] AS [AddressText], 
            //[Extent3].[TownID] AS [TownID], 
            //[Extent4].[TownID] AS [TownID1], 
            //[Extent4].[Name] AS [Name1]
            //FROM    [dbo].[Employees] AS [Extent1]
            //INNER JOIN [dbo].[Departments] AS [Extent2] ON [Extent1].[DepartmentID] = [Extent2].[DepartmentID]
            //LEFT OUTER JOIN [dbo].[Addresses] AS [Extent3] ON [Extent1].[AddressID] = [Extent3].[AddressID]
            //LEFT OUTER JOIN [dbo].[Towns] AS [Extent4] ON [Extent3].[TownID] = [Extent4].[TownID]
        }