public void Update(List <List <data_Organization_v1List> > input) { int counter = 0; foreach (List <data_Organization_v1List> block in input) { using (UNS.Models.UNSModel context = new UNS.Models.UNSModel()) { block.RemoveAll(x => x.global_id == null); counter += block.Count; foreach (var row in block) { if (row.geoData == null) { row.geoData = new GeoData(); } } var orgs = block.Select(s => Mapper.Map <data_Organization_v1List, Organization>(s)).ToList(); ///TODO реализовать проверку на совпадение имен библиотек, так как есть филиалы context.Organizations.AddOrUpdate(u => new { u.OGRN, u.INN, u.FullName }, orgs.ToArray()); Logger.Logger.Info(string.Join(" ", typeof(data_Organization_v1List).Name, "Сохранено", block.Count.ToString(), "всего", counter.ToString())); context.SaveChanges(); } } }
public void Room() { using (var context = new UNS.Models.UNSModel()) { int counter = 0; int counterLength = 100; context.Configuration.AutoDetectChangesEnabled = false; ((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 10000; Logger.Logger.Info(string.Join(" ", "Удаляются старые данные")); context.AddressAOs.RemoveRange(context.AddressAOs); Logger.Logger.Info(string.Join(" ", "Начато сохранение")); context.SaveChanges(); Logger.Logger.Info(string.Join(" ", "Сохранение завершено")); Logger.Logger.Info(string.Join(" ", "Поиск AddressObjects")); var mappedblock = context.AddressObjects.Where(w => w.REGIONCODE == "77").AsEnumerable().Select(s => Mapper.Map <AddressObject, UNS.Models.Entities.Fias.AddressAO>(s)).ToList(); context.Set <UNS.Models.Entities.Fias.AddressAO>().AddRange(mappedblock); context.SaveChanges(); var steads = (from stead in context.Stead join ao in context.AddressObjects on stead.PARENTGUID equals ao.AOGUID where ao.REGIONCODE == "77" select stead).AsEnumerable().Distinct().Select(stead => Mapper.Map <UNS.Models.Entities.Stead, UNS.Models.Entities.Fias.AddressStead>(stead)).GroupBy(_ => counter++ / counterLength).ToList(); foreach (var stead in steads) { context.Set <AddressStead>().AddRange(stead); context.SaveChanges(); Logger.Logger.Info(string.Join(" ", typeof(Data_Organization_5988).Name, "Сохранено")); } /*var houses = (from * house in context.Houses * join ao in context.AddressObjects * on house.AOGUID equals ao.AOGUID * select Mapper.Map<UNS.Models.Entities.House, UNS.Models.Entities.>(house)).ToList(); * context.Set<UNS.Models.Entities.Fias.AO>().AddRange(houses);*/ } }