播种数据时长时间执行更新数据库

时间:2019-05-02 10:13:01

标签: c# performance entity-framework-core ef-migrations

当我从迁移中更新有关国家,城市和机场数据的数据库时,此过程大约需要5分钟。

在我的AppContext的OnModelCreating()方法中,我从XML文档中获取此数据,并且生成的迁移文件大小约为10万行。我不确定选择正确的方法,因为数据库更新太慢。如果我只是删除数据库,则在运行程序时,OnModelCreating()方法将相当快地从文档中加载数据。

AppContext:

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吗?

0 个答案:

没有答案