public void Save(IMoBiContext context) { var project = context.CurrentProject; _sessionManager.CreateFactoryFor(project.FilePath); using (var session = _sessionManager.OpenSession()) using (var transaction = session.BeginTransaction()) { context.UpdateJournalPathRelativeTo(project.FilePath); _projectPersistor.Save(project, context); _historyManagerPersistor.Save(context.HistoryManager, _sessionManager.CurrentSession); transaction.Commit(); } // after save was successfull, compress file _projectFileCompressor.Compress(project.FilePath); project.Name = FileHelper.FileNameFromFileFullPath(project.FilePath); project.HasChanged = false; context.ProjectIsReadOnly = false; GC.Collect(); }