예제 #1
0
        private static void InsertSlides(SlideInfoDbContext context)
        {
            if (context.Slides.Any())
            {
                return;
            }

            var dirs = FileFilter.Filter(AppDirectories.SlideStorage, FileFilter.OpenSlideExtensions);

            foreach (var path in dirs)
            {
                var osr = new OpenSlide(path);

                var slide = new Slide(osr);
                context.Slides.Add(slide);
                context.SaveChanges();

                var properties = osr.ReadProperties();

                foreach (var slideProp in properties)
                {
                    var property = new Property(slide.Id, slideProp.Key, slideProp.Value);
                    context.Properties.Add(property);
                }
            }
            context.SaveChanges();
        }
예제 #2
0
        public static void UpdateSlides(SlideInfoDbContext context)
        {
            context.Database.EnsureCreated();

            var dirs = FileFilter.Filter(AppDirectories.SlideStorage, FileFilter.OpenSlideExtensions);

            foreach (var path in dirs)
            {
                var osr = new OpenSlide(path);

                var newSlide = new Slide(osr);

                var existingSlide = context.Slides.FirstOrDefault(s => s.FilePath == path);

                if (existingSlide != null)
                {
                    newSlide.Id = existingSlide.Id;
                    context.Entry(existingSlide).CurrentValues.SetValues(newSlide);
                }
                else
                {
                    context.Add(newSlide);

                    var properties = osr.ReadProperties();
                    foreach (var slideProp in properties)
                    {
                        var property = new Property(newSlide.Id, slideProp.Key, slideProp.Value);
                        context.Add(property);
                    }
                }
            }
            context.SaveChanges();
        }