Как включить амперсанд в строку подключения?

Я использую Entity Framework 4 для простого приложения и хочу записать свои учетные данные для подключения в следующую строку подключения:

<connectionStrings>
    <add name="MyEntities"    
         connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

Однако пароль (который я изменить нельзя) содержит амперсанд. ASP.NET бросает: m, используя Entity Framework 4 для простого приложения, и хотел бы записать мои учетные данные для подключения в следующую строку подключения:

<connectionStrings>
    <add name="MyEntities"    
         connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

Однако пароль (который я не могу изменить) содержит амперсанд. ASP.NET бросает: m, используя Entity Framework 4 для простого приложения, и хотел бы записать мои учетные данные для подключения в следующую строку подключения:

<connectionStrings>
    <add name="MyEntities"    
         connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

Однако пароль (который я не могу изменить) содержит амперсанд. ASP.NET бросает: Ошибка конфигурации: произошла ошибка при синтаксическом анализе EntityName. Строка XX, позиция YYY.

Если я заменю амперсанд в пароле на & amp; , я получу SqlException: Ошибка входа для пользователя myUser. Обычно этот трюк срабатывает, но я предполагаю, что что-то не так, потому что технически это строка подключения внутри строки подключения.

Что мне здесь делать? Большинство моих классов включают в себя такой код:

using (var context = new MyEntities()) {
   // do work
}

Обновление: Оказывается, что учетные данные, которые я использую, являются учетной записью домена, поэтому мне действительно нужно Integrated Security = True в строке подключения. а не пароль.

Кодирование амперсанда, как указано в принятом ответе , должно работать нормально, хотя я его не тестировал.

55
задан kenorb 18 October 2017 в 05:54
поделиться