Я хочу удалить строку подключения, которая, возможно, уже была установлена в другом файле конфигурации, а затем установить ее снова.
Скажем, в моем приложении есть файл 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 ответ
Каждый 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атрибут
Я проверил трансформацию с помощью этот инструмент.

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