示例#1
0
        private void UpdateConfigFile(ModelBuilderSettings settings)
        {
            if (!settings.SaveConnectionStringInAppConfig)
            {
                return;
            }

            var connectionString = ConnectionManager.InjectEFAttributesIntoConnectionString(
                settings.AppConfigConnectionString, settings.RuntimeProviderInvariantName);

            _configFileUtils.GetOrCreateConfigFile();
            var    existingConnectionStrings = ConnectionManager.GetExistingConnectionStrings(_configFileUtils);
            string existingConnectionString;

            if (existingConnectionStrings.TryGetValue(settings.AppConfigConnectionPropertyName, out existingConnectionString) &&
                string.Equals(existingConnectionString, connectionString))
            {
                // An element with the same name and connectionString already exists - no need to update.
                // This can happen if the user chooses an existing connection and connection name on the WizardPageDbConfig page.
                return;
            }

            var configXml = _configFileUtils.LoadConfig();

            ConnectionManager.AddConnectionStringElement(
                configXml,
                settings.AppConfigConnectionPropertyName,
                connectionString,
                settings.RuntimeProviderInvariantName);
            _configFileUtils.SaveConfig(configXml);
        }
        public void AddConnectionStringElement_appends_connection_string()
        {
            var configXml = new XmlDocument();

            configXml.LoadXml(@"<configuration>
  <connectionStrings>    
    <add name=""myModel"" connectionString=""Data Source=(localdb)\v11.0;"" providerName=""System.Data.SqlClient"" />
  </connectionStrings>
</configuration>");

            ConnectionManager.AddConnectionStringElement(configXml, "MyDb", "db=mydb", "fancyDb");

            var addElement = configXml.SelectSingleNode("/configuration/connectionStrings/add[@name='MyDb']") as XmlElement;

            Assert.NotNull(addElement);
            Assert.Equal("db=mydb", addElement.GetAttribute("connectionString"));
            Assert.Equal("fancyDb", addElement.GetAttribute("providerName"));
        }
        public void AddConnectionStringElement_throws_if_config_invalid()
        {
            var configContents = new[]
            {
                @"<configuration1 />",
                @"<configuration xmlns=""fakexmlns""/>",
                @"<ns:configuration xmlns:ns=""fakexmlns""/>"
            };

            foreach (var config in configContents)
            {
                var configXml = new XmlDocument();
                configXml.LoadXml(config);

                Assert.Equal(
                    Assert.Throws <XmlException>(
                        () => ConnectionManager.AddConnectionStringElement(configXml, "MyDb", "db=mydb", "fancyDb")).Message,
                    Resources.ConnectionManager_CorruptConfig);
            }
        }