Example #1
0
 private static void RemoveAllEntities(F1Context context)
 {
     context.Sponsors.Remove(context.Sponsors.ToArray());
     context.Set <TitleSponsor>().Remove(context.Set <TitleSponsor>().ToArray());
     context.Drivers.Remove(context.Drivers.ToArray());
     context.Set <TestDriver>().Remove(context.Set <TestDriver>().ToArray());
     context.Teams.Remove(context.Teams.ToArray());
     context.Engines.Remove(context.Engines.ToArray());
     context.EngineSuppliers.Remove(context.EngineSuppliers.ToArray());
 }
Example #2
0
        public static void Cleanup(F1Context context)
        {
            RemoveAllEntities(context);

            context.SaveChanges();
        }
Example #3
0
        public static Task CleanupAsync(F1Context context)
        {
            RemoveAllEntities(context);

            return(context.SaveChangesAsync());
        }
Example #4
0
        public static Task SeedAsync(F1Context context)
        {
            AddEntities(context);

            return(context.SaveChangesAsync());
        }
Example #5
0
        private static void AddEntities(F1Context context)
        {
            foreach (var engineSupplier in new List <EngineSupplier>
            {
                new EngineSupplier
                {
                    Name = "Mercedes"
                },
                new EngineSupplier
                {
                    Name = "Renault"
                },
                new EngineSupplier
                {
                    Name = "Ferrari"
                },
                new EngineSupplier
                {
                    Name = "Cosworth"
                },
            })
            {
                context.Add(engineSupplier);
            }

            // TODO: Change to context.EngineSuppliers.Local once local queries work
            var engineSuppliers = context.ChangeTracker.Entries <EngineSupplier>().Select(e => e.Entity);
            var mercedesEngine  = new Engine
            {
                Name            = "FO 108X",
                StorageLocation = new Location
                {
                    Latitude  = 47.64491,
                    Longitude = -122.128101
                },
                EngineSupplier = engineSuppliers.Single(s => s.Name == "Mercedes")
            };
            var renaultEngine = new Engine
            {
                Name            = "RS27-2010",
                StorageLocation = new Location
                {
                    Latitude  = 47.644199,
                    Longitude = -122.127049
                },
                EngineSupplier = engineSuppliers.Single(s => s.Name == "Renault")
            };
            var ferrariEngine = new Engine
            {
                Name            = "056",
                StorageLocation = new Location
                {
                    Latitude  = 47.64256,
                    Longitude = -122.130609
                },
                EngineSupplier = engineSuppliers.Single(s => s.Name == "Ferrari")
            };
            var cosworthEngine = new Engine
            {
                Name            = "CA2010",
                StorageLocation = new Location
                {
                    Latitude  = 47.644851,
                    Longitude = -122.129781
                },
                EngineSupplier = engineSuppliers.Single(s => s.Name == "Cosworth")
            };

            foreach (var engine in new List <Engine>
            {
                mercedesEngine,
                renaultEngine,
                ferrariEngine,
                cosworthEngine
            })
            {
                context.Engines.Add(engine);
            }

            foreach (var team in new List <Team>
            {
                new Team
                {
                    Id = Team.McLaren,
                    Name = "Vodafone McLaren Mercedes",
                    Constructor = "McLaren",
                    Chassis = new Chassis
                    {
                        Name = "MP4-25"
                    },
                    Engine = mercedesEngine,
                    Tire = "Bridgestone",
                    Principal = "Martin Whitmarsh",
                    ConstructorsChampionships = 8,
                    DriversChampionships = 12,
                    Races = 678,
                    Victories = 168,
                    Poles = 146,
                    FastestLaps = 140
                },
                new Team
                {
                    Id = Team.Mercedes,
                    Name = "Mercedes GP Petronas F1 Team",
                    Constructor = "Mercedes",
                    Chassis = new Chassis
                    {
                        Name = "MGP W01"
                    },
                    Engine = mercedesEngine,
                    Tire = "Bridgestone",
                    Principal = "Ross Brawn",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 2,
                    Races = 24,
                    Victories = 9,
                    Poles = 8,
                    FastestLaps = 9
                },
                new Team
                {
                    Id = Team.RedBull,
                    Name = "Red Bull Racing",
                    Constructor = "Red Bull",
                    Chassis = new Chassis
                    {
                        Name = "RB6"
                    },
                    Engine = renaultEngine,
                    Tire = "Bridgestone",
                    Principal = "Christian Horner",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 0,
                    Races = 101,
                    Victories = 12,
                    Poles = 16,
                    FastestLaps = 11
                },
                new Team
                {
                    Id = Team.Ferrari,
                    Name = "Scuderia Ferrari Marlboro",
                    Constructor = "Ferrari",
                    Chassis = new Chassis
                    {
                        Name = "F10"
                    },
                    Engine = ferrariEngine,
                    Tire = "Bridgestone",
                    Principal = "Stefano Domenicali",
                    ConstructorsChampionships = 16,
                    DriversChampionships = 15,
                    Races = 805,
                    Victories = 212,
                    Poles = 203,
                    FastestLaps = 221
                },
                new Team
                {
                    Id = Team.Williams,
                    Name = "AT&T Williams",
                    Constructor = "Williams",
                    Chassis = new Chassis
                    {
                        Name = "FW32"
                    },
                    Engine = cosworthEngine,
                    Tire = "Bridgestone",
                    Principal = "Frank Williams/Patrick Head",
                    ConstructorsChampionships = 9,
                    DriversChampionships = 7,
                    Races = 532,
                    Victories = 113,
                    Poles = 125,
                    FastestLaps = 130
                },
                new Team
                {
                    Id = Team.Renault,
                    Name = "Renault F1 Team",
                    Constructor = "Renault",
                    Chassis = new Chassis
                    {
                        Name = "R30"
                    },
                    Engine = renaultEngine,
                    Tire = "Bridgestone",
                    Principal = "Eric Boullier",
                    ConstructorsChampionships = 2,
                    DriversChampionships = 2,
                    Races = 278,
                    Victories = 35,
                    Poles = 51,
                    FastestLaps = 31
                },
                new Team
                {
                    Id = Team.ForceIndia,
                    Name = "Force India F1 Team",
                    Constructor = "Force India",
                    Chassis = new Chassis
                    {
                        Name = "VJM03"
                    },
                    Engine = mercedesEngine,
                    Tire = "Bridgestone",
                    Principal = "Vijay Mallya",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 0,
                    Races = 47,
                    Victories = 0,
                    Poles = 1,
                    FastestLaps = 1
                },
                new Team
                {
                    Id = Team.ToroRosso,
                    Name = "Scuderia Toro Rosso",
                    Constructor = "Toro Rosso",
                    Chassis = new Chassis
                    {
                        Name = "STR5"
                    },
                    Engine = ferrariEngine,
                    Tire = "Bridgestone",
                    Principal = "Franz Tost",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 0,
                    Races = 82,
                    Victories = 1,
                    Poles = 1,
                    FastestLaps = 0
                },
                new Team
                {
                    Id = Team.Lotus,
                    Name = "Lotus Racing",
                    Constructor = "Lotus",
                    Chassis = new Chassis
                    {
                        Name = "T127"
                    },
                    Engine = cosworthEngine,
                    Tire = "Bridgestone",
                    Principal = "Tony Fernandes",
                    ConstructorsChampionships = 7,
                    DriversChampionships = 6,
                    Races = 503,
                    Victories = 73,
                    Poles = 102,
                    FastestLaps = 65
                },
                new Team
                {
                    Id = Team.Hispania,
                    Name = "Hispania Racing F1 Team (HRT)",
                    Constructor = "HRT",
                    Chassis = new Chassis
                    {
                        Name = "F110"
                    },
                    Engine = cosworthEngine,
                    Tire = "Bridgestone",
                    Principal = "Colin Kolles",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 0,
                    Races = 12,
                    Victories = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Team
                {
                    Id = Team.Sauber,
                    Name = "BMW Sauber F1 Team",
                    Constructor = "Sauber",
                    Chassis = new Chassis
                    {
                        Name = "C29"
                    },
                    Engine = ferrariEngine,
                    Tire = "Bridgestone",
                    Principal = "Peter Sauber",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 0,
                    Races = 288,
                    Victories = 1,
                    Poles = 1,
                    FastestLaps = 2
                },
                new Team
                {
                    Id = Team.Virgin,
                    Name = "Virgin Racing",
                    Constructor = "Virgin",
                    Chassis = new Chassis
                    {
                        Name = "VR-01"
                    },
                    Engine = cosworthEngine,
                    Tire = "Bridgestone",
                    Principal = "John Booth",
                    ConstructorsChampionships = 0,
                    DriversChampionships = 0,
                    Races = 12,
                    Victories = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
            })
            {
                context.Teams.Add(team);
            }

            foreach (var driver in new List <Driver>
            {
                new Driver
                {
                    Name = "Jenson Button",
                    TeamId = Team.McLaren,
                    CarNumber = 1,
                    Championships = 1,
                    Races = 184,
                    Wins = 9,
                    Podiums = 29,
                    Poles = 7,
                    FastestLaps = 3
                },
                new Driver
                {
                    Name = "Lewis Hamilton",
                    TeamId = Team.McLaren,
                    CarNumber = 2,
                    Championships = 1,
                    Races = 64,
                    Wins = 13,
                    Podiums = 33,
                    Poles = 18,
                    FastestLaps = 5
                },
                new TestDriver
                {
                    Name = "Gary Paffett",
                    TeamId = Team.McLaren,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Michael Schumacher",
                    TeamId = Team.Mercedes,
                    CarNumber = 3,
                    Championships = 7,
                    Races = 262,
                    Wins = 91,
                    Podiums = 154,
                    Poles = 68,
                    FastestLaps = 76
                },
                new Driver
                {
                    Name = "Nico Rosberg",
                    TeamId = Team.Mercedes,
                    CarNumber = 4,
                    Championships = 0,
                    Races = 82,
                    Wins = 0,
                    Podiums = 5,
                    Poles = 0,
                    FastestLaps = 2
                },
                new TestDriver
                {
                    Name = "Nick Heidfeld",
                    TeamId = Team.Mercedes,
                    CarNumber = null,
                    Championships = 0,
                    Races = 169,
                    Wins = 0,
                    Podiums = 12,
                    Poles = 1,
                    FastestLaps = 2
                },
                new Driver
                {
                    Name = "Sebastian Vettel",
                    TeamId = Team.RedBull,
                    CarNumber = 5,
                    Championships = 0,
                    Races = 55,
                    Wins = 7,
                    Podiums = 15,
                    Poles = 12,
                    FastestLaps = 6
                },
                new Driver
                {
                    Name = "Mark Webber",
                    TeamId = Team.RedBull,
                    CarNumber = 6,
                    Championships = 0,
                    Races = 152,
                    Wins = 6,
                    Podiums = 16,
                    Poles = 5,
                    FastestLaps = 5
                },
                new TestDriver
                {
                    Name = "Brendon Hartley",
                    TeamId = Team.RedBull,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Daniel Ricciardo",
                    TeamId = Team.RedBull,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "David Coulthard",
                    TeamId = Team.RedBull,
                    CarNumber = null,
                    Championships = 0,
                    Races = 247,
                    Wins = 13,
                    Podiums = 62,
                    Poles = 12,
                    FastestLaps = 18
                },
                new Driver
                {
                    Name = "Felipe Massa",
                    TeamId = Team.Ferrari,
                    CarNumber = 7,
                    Championships = 0,
                    Races = 128,
                    Wins = 11,
                    Podiums = 31,
                    Poles = 15,
                    FastestLaps = 12
                },
                new Driver
                {
                    Name = "Fernando Alonso",
                    TeamId = Team.Ferrari,
                    CarNumber = 8,
                    Championships = 2,
                    Races = 152,
                    Wins = 23,
                    Podiums = 58,
                    Poles = 18,
                    FastestLaps = 15
                },
                new TestDriver
                {
                    Name = "Giancarlo Fisichella",
                    TeamId = Team.Ferrari,
                    CarNumber = null,
                    Championships = 0,
                    Races = 231,
                    Wins = 3,
                    Podiums = 19,
                    Poles = 4,
                    FastestLaps = 2
                },
                new TestDriver
                {
                    Name = "Luca Badoer",
                    TeamId = Team.Ferrari,
                    CarNumber = null,
                    Championships = 0,
                    Races = 58,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Marc Gené",
                    TeamId = Team.Ferrari,
                    CarNumber = null,
                    Championships = 0,
                    Races = 36,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Rubens Barrichello",
                    TeamId = Team.Williams,
                    CarNumber = 9,
                    Championships = 0,
                    Races = 300,
                    Wins = 11,
                    Podiums = 68,
                    Poles = 14,
                    FastestLaps = 17
                },
                new Driver
                {
                    Name = "Nico Hülkenberg",
                    TeamId = Team.Williams,
                    CarNumber = 10,
                    Championships = 0,
                    Races = 12,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Valtteri Bottas",
                    TeamId = Team.Williams,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Robert Kubica",
                    TeamId = Team.Renault,
                    CarNumber = 11,
                    Championships = 0,
                    Races = 69,
                    Wins = 1,
                    Podiums = 11,
                    Poles = 1,
                    FastestLaps = 1
                },
                new Driver
                {
                    Name = "Vitaly Petrov",
                    TeamId = Team.Renault,
                    CarNumber = 12,
                    Championships = 0,
                    Races = 12,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 1
                },
                new TestDriver
                {
                    Name = "Ho-Pin Tung",
                    TeamId = Team.Renault,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Jérôme d'Ambrosio",
                    TeamId = Team.Renault,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Jan Charouz",
                    TeamId = Team.Renault,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Adrian Sutil",
                    TeamId = Team.ForceIndia,
                    CarNumber = 14,
                    Championships = 0,
                    Races = 64,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 1
                },
                new Driver
                {
                    Name = "Vitantonio Liuzzi",
                    TeamId = Team.ForceIndia,
                    CarNumber = 15,
                    Championships = 0,
                    Races = 56,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Paul di Resta",
                    TeamId = Team.ForceIndia,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Sébastien Buemi",
                    TeamId = Team.ToroRosso,
                    CarNumber = 16,
                    Championships = 0,
                    Races = 29,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Jaime Alguersuari",
                    TeamId = Team.ToroRosso,
                    CarNumber = 17,
                    Championships = 0,
                    Races = 20,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Brendon Hartley",
                    TeamId = Team.ToroRosso,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Daniel Ricciardo",
                    TeamId = Team.ToroRosso,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Jarno Trulli",
                    TeamId = Team.Lotus,
                    CarNumber = 18,
                    Championships = 0,
                    Races = 231,
                    Wins = 1,
                    Podiums = 11,
                    Poles = 4,
                    FastestLaps = 1
                },
                new Driver
                {
                    Name = "Heikki Kovalainen",
                    TeamId = Team.Lotus,
                    CarNumber = 19,
                    Championships = 0,
                    Races = 64,
                    Wins = 1,
                    Podiums = 4,
                    Poles = 1,
                    FastestLaps = 2
                },
                new TestDriver
                {
                    Name = "Fairuz Fauzy",
                    TeamId = Team.Lotus,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Karun Chandhok",
                    TeamId = Team.Hispania,
                    CarNumber = 20,
                    Championships = 0,
                    Races = 10,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Bruno Senna",
                    TeamId = Team.Hispania,
                    CarNumber = 21,
                    Championships = 0,
                    Races = 11,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Christian Klien",
                    TeamId = Team.Hispania,
                    CarNumber = null,
                    Championships = 0,
                    Races = 48,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Sakon Yamamoto",
                    TeamId = Team.Hispania,
                    CarNumber = null,
                    Championships = 0,
                    Races = 17,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new Driver
                {
                    Name = "Timo Glock",
                    TeamId = Team.Virgin,
                    CarNumber = 24,
                    Championships = 0,
                    Races = 48,
                    Wins = 0,
                    Podiums = 3,
                    Poles = 0,
                    FastestLaps = 1
                },
                new Driver
                {
                    Name = "Lucas di Grassi",
                    TeamId = Team.Virgin,
                    CarNumber = 25,
                    Championships = 0,
                    Races = 12,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Andy Soucek",
                    TeamId = Team.Virgin,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
                new TestDriver
                {
                    Name = "Luiz Razia",
                    TeamId = Team.Virgin,
                    CarNumber = null,
                    Championships = 0,
                    Races = 0,
                    Wins = 0,
                    Podiums = 0,
                    Poles = 0,
                    FastestLaps = 0
                },
            })
            {
                context.Drivers.Add(driver);
            }

            var shell = new Sponsor
            {
                Name = "Shell"
            };
            var vodafone = new TitleSponsor
            {
                Name    = "Vodafone",
                Details = new SponsorDetails
                {
                    Days  = 10,
                    Space = 50m
                }
            };
            var bridgestone = new Sponsor
            {
                Name = "Bridgestone"
            };
            var fia = new Sponsor
            {
                Name = "FIA"
            };

            foreach (var sponsor in new List <Sponsor>
            {
                shell,
                vodafone,
                bridgestone,
                fia
            })
            {
                context.Sponsors.Add(sponsor);
            }

            // TODO: Change to context.Teams.Local once local queries work
            var teams = context.ChangeTracker.Entries <Team>().Select(e => e.Entity);

            foreach (var team in teams)
            {
                team.Chassis.TeamId = team.Id;

                if (team.Id
                    != Team.Hispania)
                {
                    team.Sponsors.Add(bridgestone);
                    team.Sponsors.Add(fia);
                }
            }

            teams.Single(t => t.Id == Team.McLaren).Sponsors.Add(vodafone);
            teams.Single(t => t.Id == Team.Ferrari).Sponsors.Add(shell);
        }
 private static void RemoveAllEntities(F1Context context)
 {
     context.Sponsors.RemoveRange(context.Sponsors);
     context.Set<TitleSponsor>().RemoveRange(context.Set<TitleSponsor>());
     context.Drivers.RemoveRange(context.Drivers);
     context.Set<TestDriver>().RemoveRange(context.Set<TestDriver>());
     context.Teams.RemoveRange(context.Teams);
     context.Engines.RemoveRange(context.Engines);
     context.EngineSuppliers.RemoveRange(context.EngineSuppliers);
 }
Example #7
0
        public static void Seed(F1Context context)
        {
            AddEntities(context);

            context.SaveChanges();
        }
        public static Task CleanupAsync(F1Context context)
        {
            RemoveAllEntities(context);

            return context.SaveChangesAsync();
        }
        public static void Cleanup(F1Context context)
        {
            RemoveAllEntities(context);

            context.SaveChanges();
        }
        private static void AddEntities(F1Context context)
        {
            foreach (var engineSupplier in new List<EngineSupplier>
                {
                    new EngineSupplier
                        {
                            Name = "Mercedes"
                        },
                    new EngineSupplier
                        {
                            Name = "Renault"
                        },
                    new EngineSupplier
                        {
                            Name = "Ferrari"
                        },
                    new EngineSupplier
                        {
                            Name = "Cosworth"
                        }
                })
            {
                context.Add(engineSupplier);
            }

            // TODO: Change to context.EngineSuppliers.Local once local queries work
            var engineSuppliers = context.ChangeTracker.Entries<EngineSupplier>().Select(e => e.Entity);
            var mercedesEngine = new Engine
                {
                    Name = "FO 108X",
                    StorageLocation = new Location
                        {
                            Latitude = 47.64491,
                            Longitude = -122.128101
                        },
                    EngineSupplier = engineSuppliers.Single(s => s.Name == "Mercedes")
                };
            var renaultEngine = new Engine
                {
                    Name = "RS27-2010",
                    StorageLocation = new Location
                        {
                            Latitude = 47.644199,
                            Longitude = -122.127049
                        },
                    EngineSupplier = engineSuppliers.Single(s => s.Name == "Renault")
                };
            var ferrariEngine = new Engine
                {
                    Name = "056",
                    StorageLocation = new Location
                        {
                            Latitude = 47.64256,
                            Longitude = -122.130609
                        },
                    EngineSupplier = engineSuppliers.Single(s => s.Name == "Ferrari")
                };
            var cosworthEngine = new Engine
                {
                    Name = "CA2010",
                    StorageLocation = new Location
                        {
                            Latitude = 47.644851,
                            Longitude = -122.129781
                        },
                    EngineSupplier = engineSuppliers.Single(s => s.Name == "Cosworth")
                };

            foreach (var engine in new List<Engine>
                {
                    mercedesEngine,
                    renaultEngine,
                    ferrariEngine,
                    cosworthEngine
                })
            {
                context.Engines.Add(engine);
            }

            foreach (var team in new List<Team>
                {
                    new Team
                        {
                            Id = Team.McLaren,
                            Name = "Vodafone McLaren Mercedes",
                            Constructor = "McLaren",
                            Chassis = new Chassis
                                {
                                    Name = "MP4-25"
                                },
                            Engine = mercedesEngine,
                            Tire = "Bridgestone",
                            Principal = "Martin Whitmarsh",
                            ConstructorsChampionships = 8,
                            DriversChampionships = 12,
                            Races = 678,
                            Victories = 168,
                            Poles = 146,
                            FastestLaps = 140
                        },
                    new Team
                        {
                            Id = Team.Mercedes,
                            Name = "Mercedes GP Petronas F1 Team",
                            Constructor = "Mercedes",
                            Chassis = new Chassis
                                {
                                    Name = "MGP W01"
                                },
                            Engine = mercedesEngine,
                            Tire = "Bridgestone",
                            Principal = "Ross Brawn",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 2,
                            Races = 24,
                            Victories = 9,
                            Poles = 8,
                            FastestLaps = 9
                        },
                    new Team
                        {
                            Id = Team.RedBull,
                            Name = "Red Bull Racing",
                            Constructor = "Red Bull",
                            Chassis = new Chassis
                                {
                                    Name = "RB6"
                                },
                            Engine = renaultEngine,
                            Tire = "Bridgestone",
                            Principal = "Christian Horner",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 0,
                            Races = 101,
                            Victories = 12,
                            Poles = 16,
                            FastestLaps = 11
                        },
                    new Team
                        {
                            Id = Team.Ferrari,
                            Name = "Scuderia Ferrari Marlboro",
                            Constructor = "Ferrari",
                            Chassis = new Chassis
                                {
                                    Name = "F10"
                                },
                            Engine = ferrariEngine,
                            Tire = "Bridgestone",
                            Principal = "Stefano Domenicali",
                            ConstructorsChampionships = 16,
                            DriversChampionships = 15,
                            Races = 805,
                            Victories = 212,
                            Poles = 203,
                            FastestLaps = 221
                        },
                    new Team
                        {
                            Id = Team.Williams,
                            Name = "AT&T Williams",
                            Constructor = "Williams",
                            Chassis = new Chassis
                                {
                                    Name = "FW32"
                                },
                            Engine = cosworthEngine,
                            Tire = "Bridgestone",
                            Principal = "Frank Williams/Patrick Head",
                            ConstructorsChampionships = 9,
                            DriversChampionships = 7,
                            Races = 532,
                            Victories = 113,
                            Poles = 125,
                            FastestLaps = 130
                        },
                    new Team
                        {
                            Id = Team.Renault,
                            Name = "Renault F1 Team",
                            Constructor = "Renault",
                            Chassis = new Chassis
                                {
                                    Name = "R30"
                                },
                            Engine = renaultEngine,
                            Tire = "Bridgestone",
                            Principal = "Eric Boullier",
                            ConstructorsChampionships = 2,
                            DriversChampionships = 2,
                            Races = 278,
                            Victories = 35,
                            Poles = 51,
                            FastestLaps = 31
                        },
                    new Team
                        {
                            Id = Team.ForceIndia,
                            Name = "Force India F1 Team",
                            Constructor = "Force India",
                            Chassis = new Chassis
                                {
                                    Name = "VJM03"
                                },
                            Engine = mercedesEngine,
                            Tire = "Bridgestone",
                            Principal = "Vijay Mallya",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 0,
                            Races = 47,
                            Victories = 0,
                            Poles = 1,
                            FastestLaps = 1
                        },
                    new Team
                        {
                            Id = Team.ToroRosso,
                            Name = "Scuderia Toro Rosso",
                            Constructor = "Toro Rosso",
                            Chassis = new Chassis
                                {
                                    Name = "STR5"
                                },
                            Engine = ferrariEngine,
                            Tire = "Bridgestone",
                            Principal = "Franz Tost",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 0,
                            Races = 82,
                            Victories = 1,
                            Poles = 1,
                            FastestLaps = 0
                        },
                    new Team
                        {
                            Id = Team.Lotus,
                            Name = "Lotus Racing",
                            Constructor = "Lotus",
                            Chassis = new Chassis
                                {
                                    Name = "T127"
                                },
                            Engine = cosworthEngine,
                            Tire = "Bridgestone",
                            Principal = "Tony Fernandes",
                            ConstructorsChampionships = 7,
                            DriversChampionships = 6,
                            Races = 503,
                            Victories = 73,
                            Poles = 102,
                            FastestLaps = 65
                        },
                    new Team
                        {
                            Id = Team.Hispania,
                            Name = "Hispania Racing F1 Team (HRT)",
                            Constructor = "HRT",
                            Chassis = new Chassis
                                {
                                    Name = "F110"
                                },
                            Engine = cosworthEngine,
                            Tire = "Bridgestone",
                            Principal = "Colin Kolles",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 0,
                            Races = 12,
                            Victories = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Team
                        {
                            Id = Team.Sauber,
                            Name = "BMW Sauber F1 Team",
                            Constructor = "Sauber",
                            Chassis = new Chassis
                                {
                                    Name = "C29"
                                },
                            Engine = ferrariEngine,
                            Tire = "Bridgestone",
                            Principal = "Peter Sauber",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 0,
                            Races = 288,
                            Victories = 1,
                            Poles = 1,
                            FastestLaps = 2
                        },
                    new Team
                        {
                            Id = Team.Virgin,
                            Name = "Virgin Racing",
                            Constructor = "Virgin",
                            Chassis = new Chassis
                                {
                                    Name = "VR-01"
                                },
                            Engine = cosworthEngine,
                            Tire = "Bridgestone",
                            Principal = "John Booth",
                            ConstructorsChampionships = 0,
                            DriversChampionships = 0,
                            Races = 12,
                            Victories = 0,
                            Poles = 0,
                            FastestLaps = 0
                        }
                })
            {
                context.Teams.Add(team);
            }

            foreach (var driver in new List<Driver>
                {
                    new Driver
                        {
                            Name = "Jenson Button",
                            TeamId = Team.McLaren,
                            CarNumber = 1,
                            Championships = 1,
                            Races = 184,
                            Wins = 9,
                            Podiums = 29,
                            Poles = 7,
                            FastestLaps = 3
                        },
                    new Driver
                        {
                            Name = "Lewis Hamilton",
                            TeamId = Team.McLaren,
                            CarNumber = 2,
                            Championships = 1,
                            Races = 64,
                            Wins = 13,
                            Podiums = 33,
                            Poles = 18,
                            FastestLaps = 5
                        },
                    new TestDriver
                        {
                            Name = "Gary Paffett",
                            TeamId = Team.McLaren,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Michael Schumacher",
                            TeamId = Team.Mercedes,
                            CarNumber = 3,
                            Championships = 7,
                            Races = 262,
                            Wins = 91,
                            Podiums = 154,
                            Poles = 68,
                            FastestLaps = 76
                        },
                    new Driver
                        {
                            Name = "Nico Rosberg",
                            TeamId = Team.Mercedes,
                            CarNumber = 4,
                            Championships = 0,
                            Races = 82,
                            Wins = 0,
                            Podiums = 5,
                            Poles = 0,
                            FastestLaps = 2
                        },
                    new TestDriver
                        {
                            Name = "Nick Heidfeld",
                            TeamId = Team.Mercedes,
                            CarNumber = null,
                            Championships = 0,
                            Races = 169,
                            Wins = 0,
                            Podiums = 12,
                            Poles = 1,
                            FastestLaps = 2
                        },
                    new Driver
                        {
                            Name = "Sebastian Vettel",
                            TeamId = Team.RedBull,
                            CarNumber = 5,
                            Championships = 0,
                            Races = 55,
                            Wins = 7,
                            Podiums = 15,
                            Poles = 12,
                            FastestLaps = 6
                        },
                    new Driver
                        {
                            Name = "Mark Webber",
                            TeamId = Team.RedBull,
                            CarNumber = 6,
                            Championships = 0,
                            Races = 152,
                            Wins = 6,
                            Podiums = 16,
                            Poles = 5,
                            FastestLaps = 5
                        },
                    new TestDriver
                        {
                            Name = "Brendon Hartley",
                            TeamId = Team.RedBull,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Daniel Ricciardo",
                            TeamId = Team.RedBull,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "David Coulthard",
                            TeamId = Team.RedBull,
                            CarNumber = null,
                            Championships = 0,
                            Races = 247,
                            Wins = 13,
                            Podiums = 62,
                            Poles = 12,
                            FastestLaps = 18
                        },
                    new Driver
                        {
                            Name = "Felipe Massa",
                            TeamId = Team.Ferrari,
                            CarNumber = 7,
                            Championships = 0,
                            Races = 128,
                            Wins = 11,
                            Podiums = 31,
                            Poles = 15,
                            FastestLaps = 12
                        },
                    new Driver
                        {
                            Name = "Fernando Alonso",
                            TeamId = Team.Ferrari,
                            CarNumber = 8,
                            Championships = 2,
                            Races = 152,
                            Wins = 23,
                            Podiums = 58,
                            Poles = 18,
                            FastestLaps = 15
                        },
                    new TestDriver
                        {
                            Name = "Giancarlo Fisichella",
                            TeamId = Team.Ferrari,
                            CarNumber = null,
                            Championships = 0,
                            Races = 231,
                            Wins = 3,
                            Podiums = 19,
                            Poles = 4,
                            FastestLaps = 2
                        },
                    new TestDriver
                        {
                            Name = "Luca Badoer",
                            TeamId = Team.Ferrari,
                            CarNumber = null,
                            Championships = 0,
                            Races = 58,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Marc Gené",
                            TeamId = Team.Ferrari,
                            CarNumber = null,
                            Championships = 0,
                            Races = 36,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Rubens Barrichello",
                            TeamId = Team.Williams,
                            CarNumber = 9,
                            Championships = 0,
                            Races = 300,
                            Wins = 11,
                            Podiums = 68,
                            Poles = 14,
                            FastestLaps = 17
                        },
                    new Driver
                        {
                            Name = "Nico Hülkenberg",
                            TeamId = Team.Williams,
                            CarNumber = 10,
                            Championships = 0,
                            Races = 12,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Valtteri Bottas",
                            TeamId = Team.Williams,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Robert Kubica",
                            TeamId = Team.Renault,
                            CarNumber = 11,
                            Championships = 0,
                            Races = 69,
                            Wins = 1,
                            Podiums = 11,
                            Poles = 1,
                            FastestLaps = 1
                        },
                    new Driver
                        {
                            Name = "Vitaly Petrov",
                            TeamId = Team.Renault,
                            CarNumber = 12,
                            Championships = 0,
                            Races = 12,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 1
                        },
                    new TestDriver
                        {
                            Name = "Ho-Pin Tung",
                            TeamId = Team.Renault,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Jérôme d'Ambrosio",
                            TeamId = Team.Renault,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Jan Charouz",
                            TeamId = Team.Renault,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Adrian Sutil",
                            TeamId = Team.ForceIndia,
                            CarNumber = 14,
                            Championships = 0,
                            Races = 64,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 1
                        },
                    new Driver
                        {
                            Name = "Vitantonio Liuzzi",
                            TeamId = Team.ForceIndia,
                            CarNumber = 15,
                            Championships = 0,
                            Races = 56,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Paul di Resta",
                            TeamId = Team.ForceIndia,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Sébastien Buemi",
                            TeamId = Team.ToroRosso,
                            CarNumber = 16,
                            Championships = 0,
                            Races = 29,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Jaime Alguersuari",
                            TeamId = Team.ToroRosso,
                            CarNumber = 17,
                            Championships = 0,
                            Races = 20,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Brendon Hartley",
                            TeamId = Team.ToroRosso,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Daniel Ricciardo",
                            TeamId = Team.ToroRosso,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Jarno Trulli",
                            TeamId = Team.Lotus,
                            CarNumber = 18,
                            Championships = 0,
                            Races = 231,
                            Wins = 1,
                            Podiums = 11,
                            Poles = 4,
                            FastestLaps = 1
                        },
                    new Driver
                        {
                            Name = "Heikki Kovalainen",
                            TeamId = Team.Lotus,
                            CarNumber = 19,
                            Championships = 0,
                            Races = 64,
                            Wins = 1,
                            Podiums = 4,
                            Poles = 1,
                            FastestLaps = 2
                        },
                    new TestDriver
                        {
                            Name = "Fairuz Fauzy",
                            TeamId = Team.Lotus,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Karun Chandhok",
                            TeamId = Team.Hispania,
                            CarNumber = 20,
                            Championships = 0,
                            Races = 10,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Bruno Senna",
                            TeamId = Team.Hispania,
                            CarNumber = 21,
                            Championships = 0,
                            Races = 11,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Christian Klien",
                            TeamId = Team.Hispania,
                            CarNumber = null,
                            Championships = 0,
                            Races = 48,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Sakon Yamamoto",
                            TeamId = Team.Hispania,
                            CarNumber = null,
                            Championships = 0,
                            Races = 17,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new Driver
                        {
                            Name = "Timo Glock",
                            TeamId = Team.Virgin,
                            CarNumber = 24,
                            Championships = 0,
                            Races = 48,
                            Wins = 0,
                            Podiums = 3,
                            Poles = 0,
                            FastestLaps = 1
                        },
                    new Driver
                        {
                            Name = "Lucas di Grassi",
                            TeamId = Team.Virgin,
                            CarNumber = 25,
                            Championships = 0,
                            Races = 12,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Andy Soucek",
                            TeamId = Team.Virgin,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        },
                    new TestDriver
                        {
                            Name = "Luiz Razia",
                            TeamId = Team.Virgin,
                            CarNumber = null,
                            Championships = 0,
                            Races = 0,
                            Wins = 0,
                            Podiums = 0,
                            Poles = 0,
                            FastestLaps = 0
                        }
                })
            {
                context.Drivers.Add(driver);
            }

            var shell = new Sponsor
                {
                    Name = "Shell"
                };
            var vodafone = new TitleSponsor
                {
                    Name = "Vodafone",
                    Details = new SponsorDetails
                        {
                            Days = 10,
                            Space = 50m
                        }
                };
            var bridgestone = new Sponsor
                {
                    Name = "Bridgestone"
                };
            var fia = new Sponsor
                {
                    Name = "FIA"
                };

            foreach (var sponsor in new List<Sponsor>
                {
                    shell,
                    vodafone,
                    bridgestone,
                    fia
                })
            {
                context.Sponsors.Add(sponsor);
            }

            // TODO: Change to context.Teams.Local once local queries work
            var teams = context.ChangeTracker.Entries<Team>().Select(e => e.Entity);
            foreach (var team in teams)
            {
                team.Chassis.TeamId = team.Id;

                if (team.Id
                    != Team.Hispania)
                {
                    team.Sponsors.Add(bridgestone);
                    team.Sponsors.Add(fia);
                }
            }

            teams.Single(t => t.Id == Team.McLaren).Sponsors.Add(vodafone);
            teams.Single(t => t.Id == Team.Ferrari).Sponsors.Add(shell);
        }
        public static Task SeedAsync(F1Context context)
        {
            AddEntities(context);

            return context.SaveChangesAsync();
        }
        public static void Seed(F1Context context)
        {
            AddEntities(context);

            context.SaveChanges();
        }