Я использую 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="Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True""
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="Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True""
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="Data Source=localhost\DEV;Initial Catalog=MyDB;UserId=myUser;Password=jack&jill;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
Однако пароль (который я не могу изменить) содержит амперсанд. ASP.NET бросает:
Ошибка конфигурации: произошла ошибка при синтаксическом анализе EntityName. Строка XX, позиция YYY.
Если я заменю амперсанд в пароле на & amp;
, я получу SqlException: Ошибка входа для пользователя myUser.
Обычно этот трюк срабатывает, но я предполагаю, что что-то не так, потому что технически это строка подключения внутри строки подключения.
Что мне здесь делать? Большинство моих классов включают в себя такой код:
using (var context = new MyEntities()) {
// do work
}
Обновление: Оказывается, что учетные данные, которые я использую, являются учетной записью домена, поэтому мне действительно нужно Integrated Security = True
в строке подключения. а не пароль.
Кодирование амперсанда, как указано в принятом ответе , должно работать нормально, хотя я его не тестировал.