private static async Task <bool> DoItemImport(ClassicGuildBankDbContext bankDb, XmlSerializer deserializer, int itemId) { var content = httpClient.GetAsync($"https://tbc.wowhead.com/item={itemId}?xml").Result.Content; var xmlStream = content.ReadAsStreamAsync().Result; var str = content.ReadAsStringAsync().Result; var wItem = (Wowhead)deserializer.Deserialize(xmlStream); if (wItem.Item == null) { Console.WriteLine($"Failed to locate item {itemId}"); return(false); } Console.WriteLine($"Converting Item {itemId}"); var dbItem = bankDb.Items.FirstOrDefault(i => i.Id == Convert.ToInt32(wItem.Item.Id)); if (dbItem != null) { return(false); } dbItem = new CGB.Item { Id = Convert.ToInt32(wItem.Item.Id), Name = wItem.Item.Name, Quality = wItem.Item.Quality.Text, Icon = wItem.Item.Icon.Text, Class = Convert.ToInt32(wItem.Item.Class.Id), Subclass = Convert.ToInt32(wItem.Item.Subclass.Id) }; bankDb.Items.Add(dbItem); return(true); }
public static async Task DoFullInitialize(ClassicGuildBankDbContext bankDb, MangosDbContext mangosDb) { var conn = bankDb.Database.GetDbConnection(); if (conn.State != System.Data.ConnectionState.Open) { conn.Open(); } bankDb.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Item ON;"); var deserializer = new XmlSerializer(typeof(Wowhead)); int itemCnt = 0; int skipped = 0; int maxId = bankDb.Items.Max(i => i.Id); foreach (var item in mangosDb.ItemTemplates.Where(i => i.entry > maxId)) { var content = httpClient.GetAsync($"https://classic.wowhead.com/item={item.entry}?xml").Result.Content; var xmlStream = content.ReadAsStreamAsync().Result; var str = content.ReadAsStringAsync().Result; var wItem = (Wowhead)deserializer.Deserialize(xmlStream); if (wItem.Item == null) { Console.WriteLine($"Failed to locate item {item.entry} - {item.name}"); skipped++; continue; } Console.WriteLine($"Converting Item {item.entry} - {wItem.Item.Name}"); var dbItem = bankDb.Items.FirstOrDefault(i => i.Id == Convert.ToInt32(wItem.Item.Id)); if (dbItem != null) { continue; } dbItem = new CGB.Item(); dbItem.Id = Convert.ToInt32(wItem.Item.Id); dbItem.Name = wItem.Item.Name; dbItem.Quality = wItem.Item.Quality.Text; dbItem.Icon = wItem.Item.Icon.Text; dbItem.Class = Convert.ToInt32(wItem.Item.Class.Id); dbItem.Subclass = Convert.ToInt32(wItem.Item.Subclass.Id); bankDb.Items.Add(dbItem); itemCnt++; if (itemCnt % 1000 == 0) { Console.WriteLine($"Saved {bankDb.SaveChangesAsync().Result} Records"); } } var recordsSaved = await bankDb.SaveChangesAsync(); conn.Close(); Console.WriteLine(recordsSaved); Console.WriteLine($"Skipped {skipped} Records"); Console.ReadLine(); }