static void Main(string[] args)
        {
            using (var context = new TrailTrekkerContext())
            {
                var team = context.Teams.Include(t => t.Walkers)
                           .Where(t => t.TeamNumber == 6).Single();
                var walkers = team.Walkers;
            }

            //ExtractAllData();
        }
        private static void ExtractAllData()
        {
            var urlPattern = @"http://live.sportident.co.uk//home/event/search.html?eventid=5bfd9c26-373b-45c4-9278-fa71739b6cd9&mobile=false";

            Directory.CreateDirectory(@"c:\temp\trailTrekkerData");

            foreach (var raceNumber in RaceNumbers())
            {
                var url  = urlPattern.Replace("{raceNumber}", raceNumber);
                var uri  = new Uri(url);
                var file = HtmlFileName(raceNumber);
                if (!File.Exists(file))
                {
                    Console.WriteLine("{0}: {1}", raceNumber, file);
                    try
                    {
                        using (WebClient client = new WebClient())
                        {
                            byte[] response = client.UploadValues(urlPattern, new NameValueCollection()
                            {
                                { "racenumber", raceNumber },
                            });
                            File.WriteAllBytes(file, response);
                        }
                    }
                    catch
                    {
                        Console.WriteLine("Could not do " + raceNumber);
                    }
                }
            }

            Database.SetInitializer <TrailTrekkerContext>(new System.Data.Entity.DropCreateDatabaseAlways <TrailTrekkerContext>());

            using (var context = new TrailTrekkerContext())
            {
                Console.WriteLine("Initializing " + context.Database.Connection.ConnectionString);
                context.Database.Initialize(force: true);
                Console.WriteLine("Initialized");

                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "Start - Skipton", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "WS1 - Gargrave", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "CP1 - Malham", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "WS2 - Fountains Fell", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "CP2 - Horton in Ribblesdale", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "WS3 - Cam Farm", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "WS4 - Deepdale", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "CP3 - Buckden", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "CP4 - Conistone", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "WS5 - Hetton", QuitSignal = "Bronze CP2"
                });
                context.Checkpoints.Add(new Checkpoint {
                    CheckpointName = "Finish - Skipton", QuitSignal = "Bronze CP2"
                });
                context.SaveChanges();
                Console.WriteLine("Seeded Checkpoints");
            }

            foreach (var raceNumber in RaceNumbers())
            {
                var file = HtmlFileName(raceNumber);

                var fileContent = File.ReadAllText(file).Substring(109);
                fileContent = fileContent.Replace("&nbsp;", "");

                var lines     = Lines(fileContent);
                var extractor = new Extractor(lines);
                using (var context = new TrailTrekkerContext())
                {
                    extractor.ExtractData(context, raceNumber);
                    context.SaveChanges();
                }
                Console.Write(raceNumber + " ");
            }
        }