Как удалить ConnectionString, используя преобразования конфигурации - PullRequest
63 голосов
/ 19 января 2012

У меня есть Web.config с несколькими ConnectionStrings

<connectionStrings>
    <add name="connStr1" connectionString="...
    <add name="ConnStr2" connectionString="...
    <add name="connStr3" connectionString="...

Есть ли способ использовать преобразования конфигурации для удаления определенной строки подключения? Что-то вроде:

<connectionStrings>
    <xdt:Remove connStr2?

Очевидно, что нет правильного синтаксиса, но вы меня поняли ...

Ответы [ 2 ]

99 голосов
/ 30 января 2012

Это приведет к удалению определенной строки подключения на основе ее имени.

<configuration>
  <connectionStrings> 
    <add name="ConnStr2" xdt:Transform="Remove" xdt:Locator="Match(name)" connectionString=" " /> 
  </connectionStrings> 
</configuration>

Обратите внимание, что значение connectionString не пустая строка, а вместо этого пробел.Подойдет любое непустое значение.

64 голосов
/ 19 января 2012

Из документации MSDN по теме:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add xdt:Transform="Remove" />
  </connectionStrings>
</configuration>

Transform="Remove" - это магия, которую вы ищете. Существует также Transform="RemoveAll", который вы можете использовать в сочетании с определенным дополнением (ями).

EDIT

Если подумать, вы также можете комбинировать атрибут Locator с определенным выше Remove, чтобы ограничить, какие элементы вы действительно хотите удалить.

Более определенно:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add xdt:Transform="Remove" xdt:Locator="XPath(configuration/connectionStrings[@name='ConnStr2'])" />
  </connectionStrings>
</configuration>

или подобное должно работать.

...