Длительное обновление базы данных при заполнении данных - PullRequest
0 голосов
/ 02 мая 2019

Когда я обновляю базу данных из миграции, которая загружает данные о странах, городах и аэропортах, этот процесс занимает около 5 минут.

В методе OnModelCreating () моего AppContext я беру эти данные из XML-документа, а размер сгенерированного файла миграции составляет около 100 тыс. Строк. Я не уверен, что выбрал правильный путь, потому что обновление базы данных происходит слишком медленно. Если я просто удаляю базу данных, при запуске программы метод OnModelCreating () загружает данные из документов довольно быстро.

контекст приложения:

protected override void OnModelCreating(ModelBuilder builder)
{
   var airports = new XmlSerializer(typeof(List<Airport>)).Deserialize(new FileStream(Resources.xmlAirportsList, FileMode.Open));
            builder.Entity<Airport>().HasData((List<Airport>)airports);

   var cities = new XmlSerializer(typeof(List<City>)).Deserialize(new FileStream(Resources.xmlCitiesList, FileMode.Open));
            builder.Entity<City>().HasData((List<City>)cities);

   var countries = new XmlSerializer(typeof(List<Country>)).Deserialize(new FileStream(Resources.xmlCountriesList, FileMode.Open));
            builder.Entity<Country>().HasData((List<Country>)countries);

}

Страна:

        public int Id { get; set; }
        public string Name { get; set; }
        public string RegionName { get; set; }

        [XmlIgnore]
        public ICollection<City> Cities { get; set; }

Город:

        public int Id { get; set; }
        public string Name { get; set; }
        public float GmtOffset { get; set; }

        public int CountryId { get; set; }

        [XmlIgnore]
        public Country Country { get; set; }

Аэропорт:

        public int Id { get; set; }
        public string Name { get; set; }
        public float latitude { get; set; }
        public float longitude { get; set; }

        public int CityId { get; set; }

        [XmlIgnore]
        public City City { get; set; }

UPD. Когда я использую myDbContext.Database.Migrate (), база данных создается довольно быстро, но разве она не эквивалентна update-database?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...