Esempio n. 1
0
        private void MenuItemCallback(object sender, EventArgs e)
        {
            var logger = DbHistoryScriptsPackage.Logger;

            try
            {
                DbProjectManager manager = new DbProjectManager(DbHistoryScriptsPackage._dte, new DefaultConsoleLogger());
                var configuration        = this.LoadConfiguration(manager, logger);
                if (configuration != null)
                {
                    var dacFilePath = manager.BuildDacFile();
                    if (!string.IsNullOrEmpty(dacFilePath))
                    {
                        DacDbHistorySchemaControllerBuilder builder    = new DacDbHistorySchemaControllerBuilder(configuration.Common, logger);
                        DbHistorySchemaController           controller = null;
                        using (FileStream dacFileStream = new FileStream(dacFilePath, FileMode.Open))
                        {
                            DacSchemaReader reader = new DacSchemaReader(dacFileStream, true, logger);
                            controller = builder.Build(reader, new ProjectScriptDestinationWriter(new DbProjectManager(DbHistoryScriptsPackage._dte, logger), configuration, logger));

                            if (controller != null)
                            {
                                controller.GenerateHistorySchemaObjects();
                            }
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                logger.LogError("There was an error while generating history scripts.", exc);
            }
        }
        private async Task GenerateScriptsInternalAsync(string commandValue)
        {
            LogLines.Clear();
            DacDbHistorySchemaControllerBuilder builder    = new DacDbHistorySchemaControllerBuilder(this.Configuration, this.LogLines);
            DbHistorySchemaController           controller = null;

            DacSchemaReader reader       = null;
            FileStream      sourceStream = null;

            switch (_sourceType)
            {
            case EndPointType.FilePath:
                sourceStream = new FileStream(_source, FileMode.Open, FileAccess.Read);
                reader       = new DacSchemaReader(sourceStream, true, this.LogLines);
                break;

            case EndPointType.ConnectionString:
                reader = new DacSchemaReader(_source, this.LogLines);
                break;

            case EndPointType.FolderPath:
                throw new InvalidOperationException("Source cannot be of type folder");
            }
            try
            {
                switch (_destinationType)
                {
                case EndPointType.FilePath:
                    controller = builder.Build(reader, new FileScriptDestinationWriter(Destination, this.Configuration, this.LogLines));
                    break;

                case EndPointType.ConnectionString:
                    controller = builder.Build(reader, new DbScriptDestinationWriter(Destination, this.LogLines));
                    break;

                case EndPointType.FolderPath:
                    controller = builder.Build(reader, new FolderScriptDestinationWriter(new DestinationConfiguration()
                    {
                        Common      = this.Configuration,
                        Destination = Destination
                    }, this.LogLines));
                    break;
                }
                if (controller != null)
                {
                    controller.GenerateHistorySchemaObjects();
                }
            }
            finally
            {
                if (sourceStream != null)
                {
                    sourceStream.Dispose();
                }
            }
        }