private void MoveMedia()
        {
            if (!_config.StoreMediaInDB)
            {
                // All pictures have initially been stored in the DB. Move the binaries to disk.
                var fileSystemStorageProvider = new FileSystemMediaStorageProvider(new MediaFileSystem());
                var mediaStorages             = _ctx.Set <MediaStorage>();

                using (var scope = new DbContextScope(ctx: _ctx, autoDetectChanges: true, autoCommit: false))
                {
                    var mediaFiles = _ctx.Set <MediaFile>()
                                     .Expand(x => x.MediaStorage)
                                     .Where(x => x.MediaStorageId != null)
                                     .ToList();

                    foreach (var mediaFile in mediaFiles)
                    {
                        if (mediaFile.MediaStorage?.Data?.LongLength > 0)
                        {
                            fileSystemStorageProvider.Save(mediaFile, mediaFile.MediaStorage.Data.ToStream());
                            mediaFile.MediaStorageId = null;
                            mediaFile.MediaStorage   = null;
                        }
                    }

                    scope.Commit();
                }
            }
        }
Esempio n. 2
0
        private void MoveMedia()
        {
            if (!_config.StoreMediaInDB)
            {
                // All pictures have initially been stored in the DB. Move the binaries to disk.
                var fileSystemStorageProvider = new FileSystemMediaStorageProvider(new MediaFileSystem());
                var mediaStorages             = _ctx.Set <MediaStorage>();

                // pictures
                var pics = _ctx.Set <Picture>()
                           .Expand(x => x.MediaStorage)
                           .Where(x => x.MediaStorageId != null)
                           .ToList();

                foreach (var pic in pics)
                {
                    if (pic.MediaStorage != null && pic.MediaStorage.Data != null && pic.MediaStorage.Data.LongLength > 0)
                    {
                        fileSystemStorageProvider.Save(pic.ToMedia(), pic.MediaStorage.Data);

                        try
                        {
                            mediaStorages.Remove(pic.MediaStorage);
                        }
                        catch { }

                        pic.MediaStorageId = null;
                    }
                }

                _ctx.SaveChanges();

                // downloads
                var downloads = _ctx.Set <Download>()
                                .Expand(x => x.MediaStorage)
                                .ToList();

                foreach (var download in downloads)
                {
                    if (download.MediaStorage != null && download.MediaStorage.Data != null && download.MediaStorage.Data.LongLength > 0)
                    {
                        fileSystemStorageProvider.Save(download.ToMedia(), download.MediaStorage.Data);

                        try
                        {
                            mediaStorages.Remove(download.MediaStorage);
                        }
                        catch { }

                        download.MediaStorageId = null;
                    }
                }

                _ctx.SaveChanges();
            }
        }