Esempio n. 1
0
        public void Import()
        {
            CsvToDictionaryLoader loader = new CsvToDictionaryLoader(_headerNames);
            string csvFile = File.ReadAllText(_filePath);
            List <Dictionary <string, string> > maps = loader.LoadToDictionary(csvFile);

            using (var context = new SossusvleiSedimentologyContext())
            {
                string idHeader = maps.First().Keys.First();

                foreach (var map in maps)
                {
                    string         sampleName = map[idHeader];
                    SampleOverview overview   = context.SampleOverview.First(s => s.SampleName == sampleName);

                    if (overview is null)
                    {
                        Console.WriteLine($"Missing overview for sample '{sampleName}'. Skipping data import.");

                        continue;
                    }

                    var filteredMap = map.Where(m => m.Key != idHeader);

                    foreach (var item in filteredMap)
                    {
                        TSedimentologicalData data = _mapConverter.Convert(item, overview);
                        context.Set <TSedimentologicalData>().Add(data);

                        try
                        {
                            context.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            e.HandleSaveChangesSqlException(map[idHeader]);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public void Update <T>(IEnumerable <T> input, IMapConverter <T, Organization> converter = null)
        {
            int counter = 0;
            IEnumerable <Organization> mappedblock;

            mappedblock = (converter == null)? input.Select(s => Mapper.Map <T, Organization>(s)).ToList(): converter.Convert(input).ToList();
            foreach (var itemUpserted in mappedblock)
            {
                if (itemUpserted.PersonPositions == null)
                {
                    itemUpserted.PersonPositions = new List <PersonPosition>();
                }
                if (itemUpserted.PhoneItems == null)
                {
                    itemUpserted.PhoneItems = new List <UNS.Models.Entities.PhoneItem>();
                }
                if (itemUpserted.EmailItems == null)
                {
                    itemUpserted.EmailItems = new List <UNS.Models.Entities.EmailItem>();
                }
                if (itemUpserted.FaxItems == null)
                {
                    itemUpserted.FaxItems = new List <UNS.Models.Entities.FaxItem>();
                }
                var family     = itemUpserted.PersonPositions.Any() ? itemUpserted.PersonPositions.FirstOrDefault().Person.Family : null;
                var name       = itemUpserted.PersonPositions.Any() ? itemUpserted.PersonPositions.FirstOrDefault().Person.Name : null;
                var patronimic = itemUpserted.PersonPositions.Any() ? itemUpserted.PersonPositions.FirstOrDefault().Person.Patronymic : null;

                var itemsFinded = ContexUNS.Organizations
                                  .Include("PhoneItems")
                                  .Include("FaxItems")
                                  .Include("EmailItems")
                                  .Include("OwnerRawAddresses")
                                  .Include("PersonPositions")
                                  .Where(W => W.FullName.ToLower().Trim() == itemUpserted.FullName.ToLower().Trim()).ToList();
                if (itemsFinded.Any())
                {
                    if (itemsFinded.Count() == 1)
                    {
                        try
                        {
                            var y = itemsFinded.FirstOrDefault();
                            var t = Mapper.Map <Organization, Organization>(itemUpserted, y);
                            ContexUNS.Organizations.AddOrUpdate(t);
                            //ContexUNS.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            Logger.Logger.Error(e.Message);

                            /*var changedEntries = ContexUNS.ChangeTracker.Entries()
                             *  .Where(x => x.State != EntityState.Unchanged).ToList();
                             *
                             * foreach (var entry in changedEntries)
                             * {
                             *  switch (entry.State)
                             *  {
                             *      case EntityState.Modified:
                             *          entry.CurrentValues.SetValues(entry.OriginalValues);
                             *          entry.State = EntityState.Unchanged;
                             *          break;
                             *      case EntityState.Added:
                             *          entry.State = EntityState.Detached;
                             *          break;
                             *      case EntityState.Deleted:
                             *          entry.State = EntityState.Unchanged;
                             *          break;
                             *  }
                             * }*/
                        }
                        Logger.Logger.Info(string.Join(" ", typeof(T).Name, "Изменено", input.Count().ToString(), "всего", counter.ToString()));
                        counter++;
                    }
                }
                else
                {
                    ContexUNS.Organizations.Add(itemUpserted);
                    try
                    {
                        //ContexUNS.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        Logger.Logger.Error(e.Message);

                        /*var changedEntries = ContexUNS.ChangeTracker.Entries()
                         *  .Where(x => x.State != EntityState.Unchanged).ToList();
                         *
                         * foreach (var entry in changedEntries)
                         * {
                         *  switch (entry.State)
                         *  {
                         *      case EntityState.Modified:
                         *          entry.CurrentValues.SetValues(entry.OriginalValues);
                         *          entry.State = EntityState.Unchanged;
                         *          break;
                         *      case EntityState.Added:
                         *          entry.State = EntityState.Detached;
                         *          break;
                         *      case EntityState.Deleted:
                         *          entry.State = EntityState.Unchanged;
                         *          break;
                         *  }
                         * }*/
                    }
                    Logger.Logger.Info(string.Join(" ", typeof(T).Name, "Добавлено", counter.ToString(), "Из", input.Count().ToString()));
                    counter++;
                }
            }
            ContexUNS.SaveChanges();
        }