public void Execute(string typeName, string[] constructorArguments)
        {
            DebugCheck.NotEmpty(typeName);

            var manipulator = new ConfigFileManipulator();
            var processor = new ConfigFileProcessor();

            new ConfigFileFinder().FindConfigFiles(
                Project.ProjectItems,
                i => processor.ProcessConfigFile(
                    i, new Func<XDocument, bool>[]
                        {
                            c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                            c => manipulator.AddOrUpdateConnectionFactoryInConfig(
                                c, new ConnectionFactorySpecification(typeName, constructorArguments))
                        }));
        }
Пример #2
0
        public void Execute(string invariantName, string typeName)
        {
            DebugCheck.NotEmpty(invariantName);
            DebugCheck.NotEmpty(typeName);

            var manipulator = new ConfigFileManipulator();
            var processor   = new ConfigFileProcessor();

            new ConfigFileFinder().FindConfigFiles(
                Project.ProjectItems,
                i => processor.ProcessConfigFile(
                    i, new Func <XDocument, bool>[]
            {
                c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                c => manipulator.AddProviderToConfig(c, invariantName, typeName)
            }));
        }
        public void Execute(string typeName, string[] constructorArguments)
        {
            DebugCheck.NotEmpty(typeName);

            var manipulator = new ConfigFileManipulator();
            var processor   = new ConfigFileProcessor();

            new ConfigFileFinder().FindConfigFiles(
                Project.ProjectItems,
                i => processor.ProcessConfigFile(
                    i, new Func <XDocument, bool>[]
            {
                c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                c => manipulator.AddOrUpdateConnectionFactoryInConfig(
                    c, new ConnectionFactorySpecification(typeName, constructorArguments))
            }));
        }
        public void Execute(string invariantName, string typeName)
        {
            DebugCheck.NotEmpty(invariantName);
            DebugCheck.NotEmpty(typeName);

            var manipulator = new ConfigFileManipulator();
            var processor = new ConfigFileProcessor();

            new ConfigFileFinder().FindConfigFiles(
                Project.ProjectItems,
                i => processor.ProcessConfigFile(
                    i, new Func<XDocument, bool>[]
                        {
                            c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                            c => manipulator.AddProviderToConfig(c, invariantName, typeName)
                        }));
        }
        public SqlCompactConnectionFactoryConfigurator(Project project)
        {
            Contract.Requires(project != null);

            var manipulator = new ConfigFileManipulator();
            var processor = new ConfigFileProcessor();

            new ConfigFileFinder().FindConfigFiles(
                project.ProjectItems,
                i => processor.ProcessConfigFile(
                    i, new Func<XDocument, bool>[]
                           {
                               c => manipulator.AddOrUpdateConnectionFactoryInConfig(
                                   c,
                                   new ConnectionFactorySpecification(
                                        ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                                        ConnectionFactorySpecification.SqlCompactProviderName))
                           }));
        }
        public SqlCompactConnectionFactoryConfigurator(Project project)
        {
            DebugCheck.NotNull(project);

            var manipulator = new ConfigFileManipulator();
            var processor   = new ConfigFileProcessor();

            new ConfigFileFinder().FindConfigFiles(
                project.ProjectItems,
                i => processor.ProcessConfigFile(
                    i, new Func <XDocument, bool>[]
            {
                c => manipulator.AddOrUpdateConnectionFactoryInConfig(
                    c,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                        ConnectionFactorySpecification.SqlCompactProviderName))
            }));
        }
Пример #7
0
        public ConnectionFactoryConfigurator(Project project)
        {
            Check.NotNull(project, "project");

            using (
                var detector = new SqlServerDetector(
                    Registry.LocalMachine, new ServiceControllerProxy(new ServiceController("MSSQL$SQLEXPRESS"))))
            {
                var factorySpecification = detector.BuildConnectionFactorySpecification();
                var manipulator          = new ConfigFileManipulator();
                var processor            = new ConfigFileProcessor();

                new ConfigFileFinder().FindConfigFiles(
                    project.ProjectItems,
                    i => processor.ProcessConfigFile(
                        i, new Func <XDocument, bool>[]
                {
                    c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                    c => manipulator.AddConnectionFactoryToConfig(c, factorySpecification)
                }));
            }
        }
        public void Execute()
        {
            using (
                var detector = new SqlServerDetector(
                    Registry.LocalMachine, new ServiceControllerProxy(new ServiceController("MSSQL$SQLEXPRESS"))))
            {
                var factorySpecification = detector.BuildConnectionFactorySpecification();
                var manipulator          = new ConfigFileManipulator();
                var processor            = new ConfigFileProcessor();

                new ConfigFileFinder().FindConfigFiles(
                    Project.ProjectItems,
                    i => processor.ProcessConfigFile(
                        i, new Func <XDocument, bool>[]
                {
                    c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                    c => manipulator.AddConnectionFactoryToConfig(c, factorySpecification)
                }));
            }

            new ReferenceRemover(Project).TryRemoveSystemDataEntity();
        }
        public void Execute()
        {
            using (
                var detector = new SqlServerDetector(
                    Registry.LocalMachine, new ServiceControllerProxy(new ServiceController("MSSQL$SQLEXPRESS"))))
            {
                var factorySpecification = detector.BuildConnectionFactorySpecification();
                var manipulator = new ConfigFileManipulator();
                var processor = new ConfigFileProcessor();

                new ConfigFileFinder().FindConfigFiles(
                    Project.ProjectItems,
                    i => processor.ProcessConfigFile(
                        i, new Func<XDocument, bool>[]
                            {
                                c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                                c => manipulator.AddConnectionFactoryToConfig(c, factorySpecification)
                            }));
            }

            new ReferenceRemover(Project).TryRemoveSystemDataEntity();
        }
        public ConnectionFactoryConfigurator(Project project)
        {
            Check.NotNull(project, "project");

            using (
                var detector = new SqlServerDetector(
                    Registry.LocalMachine, new ServiceControllerProxy(new ServiceController("MSSQL$SQLEXPRESS"))))
            {
                var factorySpecification = detector.BuildConnectionFactorySpecification();
                var manipulator = new ConfigFileManipulator();
                var processor = new ConfigFileProcessor();

                new ConfigFileFinder().FindConfigFiles(
                    project.ProjectItems,
                    i => processor.ProcessConfigFile(
                        i, new Func<XDocument, bool>[]
                               {
                                   c => manipulator.AddOrUpdateConfigSection(c, GetType().Assembly.GetName().Version),
                                   c => manipulator.AddConnectionFactoryToConfig(c, factorySpecification)
                               }));
            }
        }
        public ConnectionFactoryConfigurator(Project project)
        {
            Contract.Requires(project != null);

            using (
                var detector = new SqlServerDetector(
                    Registry.LocalMachine, new ServiceControllerProxy(new ServiceController("MSSQL$SQLEXPRESS"))))
            {
                var factorySpecification = detector.BuildConnectionFactorySpecification();
                var manipulator = new ConfigFileManipulator();
                var processor = new ConfigFileProcessor();
                var efVersion = new VersionMapper().GetEntityFrameworkVersion(project);

                new ConfigFileFinder().FindConfigFiles(
                    project.ProjectItems,
                    i => processor.ProcessConfigFile(
                        i, new Func<XDocument, bool>[]
                               {
                                   c => manipulator.AddOrUpdateConfigSection(c, efVersion),
                                   c => manipulator.AddConnectionFactoryToConfig(c, factorySpecification)
                               }));
            }
        }
        public void AddProviderToConfig_adds_provider_if_config_exists_but_with_no_provider()
        {
            var config = CreateProviderConfigDoc();

            var factoryAdded = new ConfigFileManipulator()
                .AddProviderToConfig(config, "Dave.Matthews.Band", "Crash");

            Assert.True(factoryAdded);
            Assert.Equal("Dave.Matthews.Band", GetProviders(config).Single().Item1);
            Assert.Equal("Crash", GetProviders(config).Single().Item2);
        }
        public void AddProviderToConfig_does_nothing_if_given_provider_exists_and_is_at_end()
        {
            var config = CreateProviderConfigDoc(
                Tuple.Create("The.Clash", "London.Calling"),
                Tuple.Create("Dave.Matthews.Band", "Crash"));

            var factoryAdded = new ConfigFileManipulator()
                .AddProviderToConfig(config, "Dave.Matthews.Band", "Crash");

            Assert.False(factoryAdded);
            Assert.Equal("The.Clash", GetProviders(config).First().Item1);
            Assert.Equal("London.Calling", GetProviders(config).First().Item2);
            Assert.Equal("Dave.Matthews.Band", GetProviders(config).Skip(1).Single().Item1);
            Assert.Equal("Crash", GetProviders(config).Skip(1).Single().Item2);
        }
        public void AddProviderToConfig_does_nothing_if_only_given_provider_already_exists()
        {
            var config = CreateProviderConfigDoc(Tuple.Create("Dave.Matthews.Band", "Crash"));

            var factoryAdded = new ConfigFileManipulator()
                .AddProviderToConfig(config, "Dave.Matthews.Band", "Crash");

            Assert.False(factoryAdded);
            Assert.Equal("Dave.Matthews.Band", GetProviders(config).Single().Item1);
            Assert.Equal("Crash", GetProviders(config).Single().Item2);
        }
        public void AddOrUpdateConfigSection_when_using_NET4_EF_assembly_updates_EF_section_if_configSections_element_is_too_new()
        {
            var config = CreateConfigSectionDoc(_net45EntityFrameworkSectionName);

            var sectionModified =
                new ConfigFileManipulator().AddOrUpdateConfigSection(
                    config, _net40EntityFrameworkVersion);

            Assert.True(sectionModified);
            Assert.Equal(_net40EntityFrameworkSectionName, GetEfSectionName(config));
        }
        public void AddOrUpdateConfigSection_adds_EF_section_if_configSections_element_has_no_entityFramework_entry()
        {
            var config = CreateConfigSectionDoc(assemblyName: null);

            var sectionModified =
                new ConfigFileManipulator().AddOrUpdateConfigSection(
                    config, _net45EntityFrameworkVersion);

            Assert.True(sectionModified);
            Assert.Equal(_net45EntityFrameworkSectionName, GetEfSectionName(config));
        }
        public void AddOrUpdateConfigSection_adds_EF_section_if_configuration_element_is_missing()
        {
            var config = new XDocument();

            var sectionModified =
                new ConfigFileManipulator().AddOrUpdateConfigSection(
                    config, _net45EntityFrameworkVersion);

            Assert.True(sectionModified);
            Assert.Equal(_net45EntityFrameworkSectionName, GetEfSectionName(config));
        }
        public void AddConnectionFactoryToConfig_adds_factory_with_no_parameters()
        {
            var config = new XDocument();

            var factoryAdded = new ConfigFileManipulator().
                AddConnectionFactoryToConfig(
                    config,
                    new ConnectionFactorySpecification("NewConnectionFactory"));

            Assert.True(factoryAdded);
            Assert.Equal("NewConnectionFactory", GetFactoryName(config));

            Assert.Null(
                config.Element(ConfigFileManipulator.ConfigurationElementName)
                      .Element(ConfigFileManipulator.EntityFrameworkElementName)
                      .Element(
                          ConfigFileManipulator.DefaultConnectionFactoryElementName)
                      .Element(ConfigFileManipulator.ParametersElementName));
        }
        public void AddConnectionFactoryToConfig_adds_factory_if_no_factory_name_already_exists()
        {
            var config = CreateConnectionFactoryConfigDoc(null);

            var factoryAdded = new ConfigFileManipulator().
                AddConnectionFactoryToConfig(
                    config,
                    new ConnectionFactorySpecification(
                        "NewConnectionFactory", "NewBaseConnectionString"));

            Assert.True(factoryAdded);
            Assert.Equal("NewConnectionFactory", GetFactoryName(config));
            Assert.Equal("NewBaseConnectionString", GetArgument(config));
        }
        public void AddProviderToConfig_moves_entry_to_end_and_updates_provider_type_if_invariant_name_already_exists()
        {
            var config = CreateProviderConfigDoc(
                Tuple.Create("Dave.Matthews.Band", "Crash"),
                Tuple.Create("The.Clash", "London.Calling"));

            var factoryAdded = new ConfigFileManipulator()
                .AddProviderToConfig(config, "Dave.Matthews.Band", "Broken.Things");

            Assert.True(factoryAdded);
            Assert.Equal("The.Clash", GetProviders(config).First().Item1);
            Assert.Equal("London.Calling", GetProviders(config).First().Item2);
            Assert.Equal("Dave.Matthews.Band", GetProviders(config).Skip(1).Single().Item1);
            Assert.Equal("Broken.Things", GetProviders(config).Skip(1).Single().Item2);
        }
        public void AddConnectionFactoryToConfig_does_nothing_if_factory_name_already_exists()
        {
            var config = CreateConnectionFactoryConfigDoc("SomeConnectionFactory");

            var factoryAdded = new ConfigFileManipulator().
                AddConnectionFactoryToConfig(
                    config,
                    new ConnectionFactorySpecification(
                        "NewConnectionFactory", "NewBaseConnectionString"));

            Assert.False(factoryAdded);
            Assert.Equal("SomeConnectionFactory", GetFactoryName(config));
        }
        public void AddOrUpdateConnectionFactoryInConfig_adds_factory_if_no_factory_name_already_exists()
        {
            var config = CreateConnectionFactoryConfigDoc(null);

            var factoryAdded = new ConfigFileManipulator()
                .AddOrUpdateConnectionFactoryInConfig(
                    config,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                        ConnectionFactorySpecification.SqlCompactProviderName));

            Assert.True(factoryAdded);
            Assert.Equal(
                ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                GetFactoryName(config));
            Assert.Equal(
                ConnectionFactorySpecification.SqlCompactProviderName,
                GetArgument(config));
        }
        public void AddConnectionFactoryToConfig_adds_factory_if_configuration_element_is_missing()
        {
            var config = new XDocument();

            var factoryAdded = new ConfigFileManipulator().
                AddConnectionFactoryToConfig(
                    config,
                    new ConnectionFactorySpecification(
                        "NewConnectionFactory", "NewBaseConnectionString"));

            Assert.True(factoryAdded);
            Assert.Equal("NewConnectionFactory", GetFactoryName(config));
            Assert.Equal("NewBaseConnectionString", GetArgument(config));
        }
        public void Default_connection_factory_is_added_to_real_Visual_Studio_project_and_config_file()
        {
            var configFilesFound = new List<string>();

            Run_Project_test_if_Visual_Studio_is_running(
                p =>
                    {
                        new ConfigFileFinder().FindConfigFiles(
                            p.ProjectItems, i =>
                                {
                                    configFilesFound.Add(i.Name);

                                    var config = XDocument.Load(i.FileNames[0]);

                                    // Checked in app.config for unit tests has no connection factory, so one should be added
                                    var modified = new ConfigFileManipulator().AddConnectionFactoryToConfig(
                                        config,
                                        new ConnectionFactorySpecification(
                                            ConnectionFactorySpecification.SqlConnectionFactoryName,
                                            "SomeConnectionString"));

                                    Assert.True(modified);

                                    Assert.Equal(
                                        ConnectionFactorySpecification.SqlConnectionFactoryName, GetFactoryName(config));
                                    Assert.Equal("SomeConnectionString", GetArgument(config));
                                });

                        Assert.Equal(1, configFilesFound.Count);
                        Assert.Equal("App.config", configFilesFound.Single());
                    });
        }
        public void AddConnectionFactoryToConfig_adds_factory_with_many_parameters()
        {
            var config = new XDocument();

            var factoryAdded = new ConfigFileManipulator().
                AddConnectionFactoryToConfig(
                    config,
                    new ConnectionFactorySpecification(
                        "NewConnectionFactory", "1", "2", "3"));

            Assert.True(factoryAdded);
            Assert.Equal("NewConnectionFactory", GetFactoryName(config));
            Assert.Equal("1", GetArguments(config).First());
            Assert.Equal("2", GetArguments(config).Skip(1).First());
            Assert.Equal("3", GetArguments(config).Skip(2).First());
        }
        public void AddOrUpdateConnectionFactoryInConfig_adds_factory_if_configuration_element_is_missing()
        {
            var config = new XDocument();

            var factoryAdded = new ConfigFileManipulator()
                .AddOrUpdateConnectionFactoryInConfig(
                    config,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                        ConnectionFactorySpecification.SqlCompactProviderName));

            Assert.True(factoryAdded);
            Assert.Equal(
                ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                GetFactoryName(config));
            Assert.Equal(
                ConnectionFactorySpecification.SqlCompactProviderName,
                GetArgument(config));
        }
        public void AddOrUpdateConfigSection_adds_EF_section_if_configSections_element_contains_no_entries()
        {
            var config =
                new XDocument(
                    new XElement(
                        ConfigFileManipulator.ConfigurationElementName,
                        new XElement(ConfigFileManipulator.ConfigSectionsElementName)));

            var sectionModified =
                new ConfigFileManipulator().AddOrUpdateConfigSection(
                    config, _net45EntityFrameworkVersion);

            Assert.True(sectionModified);
            Assert.Equal(_net45EntityFrameworkSectionName, GetEfSectionName(config));
        }
        public void AddOrUpdateConnectionFactoryInConfig_sets_factory_to_SQL_Compact_even_if_entry_with_param_already_exists()
        {
            var config =
                CreateConnectionFactoryConfigDoc(
                    ConnectionFactorySpecification.SqlConnectionFactoryName,
                    new[] { "Database=Bob" });

            var factoryAdded = new ConfigFileManipulator()
                .AddOrUpdateConnectionFactoryInConfig(
                    config,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                        ConnectionFactorySpecification.SqlCompactProviderName));

            Assert.True(factoryAdded);
            Assert.Equal(
                ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                GetFactoryName(config));
            Assert.Equal(
                ConnectionFactorySpecification.SqlCompactProviderName,
                GetArgument(config));
        }
        public void AddOrUpdateConfigSection_when_using_NET4_EF_assembly_does_nothing_if_EF_assembly_name_is_up_to_date()
        {
            var config = CreateConfigSectionDoc(_net40EntityFrameworkSectionName, addRequirePermission: true);

            var sectionModified =
                new ConfigFileManipulator().AddOrUpdateConfigSection(
                    config, _net40EntityFrameworkVersion);

            Assert.False(sectionModified);
            Assert.Equal(_net40EntityFrameworkSectionName, GetEfSectionName(config));
        }
        public void AddOrUpdateConnectionFactoryInConfig_sets_updates_argument_even_if_everything_else_already_exists()
        {
            var config =
                CreateConnectionFactoryConfigDoc(
                    ConnectionFactorySpecification.SqlConnectionFactoryName,
                    new[] { "Database=Bob" });

            var factoryAdded = new ConfigFileManipulator()
                .AddOrUpdateConnectionFactoryInConfig(
                    config,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlConnectionFactoryName,
                        "Database=Bobby"));

            Assert.True(factoryAdded);
            Assert.Equal(ConnectionFactorySpecification.SqlConnectionFactoryName, GetFactoryName(config));
            Assert.Equal("Database=Bobby", GetArgument(config));
        }
        public void AddOrUpdateConnectionFactoryInConfig_does_nothing_if_correct_SQL_Compact_entry_already_exists()
        {
            var config = CreateConnectionFactoryConfigDoc(
                ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                new[] { ConnectionFactorySpecification.SqlCompactProviderName });

            var factoryAdded = new ConfigFileManipulator()
                .AddOrUpdateConnectionFactoryInConfig(
                    config,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                        ConnectionFactorySpecification.SqlCompactProviderName));

            Assert.False(factoryAdded);
            Assert.Equal(
                ConnectionFactorySpecification.SqlCeConnectionFactoryName,
                GetFactoryName(config));
            Assert.Equal(
                ConnectionFactorySpecification.SqlCompactProviderName,
                GetArgument(config));
        }
        public void AddOrUpdateConnectionFactoryInConfig_sets_updates_some_arguments_even_if_everything_else_already_exists()
        {
            var config =
                CreateConnectionFactoryConfigDoc(
                    ConnectionFactorySpecification.SqlConnectionFactoryName,
                    new[] { "Database=Bob", "Dave=Matthews", "Too=Much" });

            var factoryAdded = new ConfigFileManipulator()
                .AddOrUpdateConnectionFactoryInConfig(
                    config,
                    new ConnectionFactorySpecification(
                        ConnectionFactorySpecification.SqlConnectionFactoryName,
                        "Database=Bobby", "Dave=Matthews", "Tripping=Billies"));

            Assert.True(factoryAdded);
            Assert.Equal(ConnectionFactorySpecification.SqlConnectionFactoryName, GetFactoryName(config));
            Assert.Equal("Database=Bobby", GetArgument(config, 0));
            Assert.Equal("Dave=Matthews", GetArgument(config, 1));
            Assert.Equal("Tripping=Billies", GetArgument(config, 2));
        }