Удалить и добавить строку подключения

Я хочу удалить строку подключения, которая, возможно, уже была установлена ​​в другом файле конфигурации, а затем установить ее снова.

Скажем, в моем приложении есть файл Web.config и файл Web.Debug.config, тогда я могу добиться того, что хочу сделать, следующим образом:

Web.config:

  <connectionStrings>
    <remove name="MyConnectionString" />
    <add name="MyConnectionString" connectionString="...";User Id=******;Password=******;" />
  </connectionStrings>

Web.Debug.config

  <connectionStrings>
    <remove xdt:Transform="Replace" name="MyConnectionString" />
    <add
      xdt:Transform="SetAttributes(connectionString)"
      xdt:Locator="Condition(@name="MyConnectionString")"
      connectionString="...";User Id=******;Password=******;"
    />
  </connectionStrings>

Я собираюсь удалить строки подключения, а затем добавить их, чтобы убедиться в отсутствии ошибок, возникающих из-за того, что строка подключения уже установлена ​​в каком-то другом файле конфигурации. Прежде чем менять десятки или сотни файлов конфигурации во всех наших репозиториях, я хочу знать, есть ли лучший способ — более легкий для чтения или требующий меньшего количества / более простых изменений.

1 ответ
1

Каждый add вход в connectionStrings раздел будет проанализирован как ConnectionStringSettings в конце дня. Этот класс имеет 3 свойства: Name,ConnectionString и ProviderName.

В предоставленном вами образце вы определили только первые два.

Ваш предоставленный образец кажется мне слишком конкретным / строгим:

  • Заменить только connectionStrings атрибут
  • Соответствует объекту, имя которого равно MyConnectionString

Тот же результат может быть достигнут с менее конкретными правилами преобразования:

<connectionStrings>
    <remove xdt:Transform="Replace" name="MyConnectionString" />
    <add name="MyConnectionString" connectionString="...;User Id=******;Password=123;" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
  </connectionStrings>
  • Я указал name как атрибут add элемент
  • Я изменил Locator значение атрибута из Condition к Match
  • И я удалил (connectionString) суффикс от Transform атрибут

Я проверил трансформацию с помощью этот инструмент.

  • 1

    Спасибо, что указали на эти улучшения синтаксиса. В таком упрощенном виде это выглядит намного лучше.

    — Астрофа

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *