Я использовал .mdf
для соединения с a database
и entityClient
. Теперь я хочу изменить строку подключения так, чтобы было нет .mdf
файл.
Следующее connectionString
корректный?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Поскольку я всегда получаю ошибку:
Базовый поставщик перестал работать на Открытом
У меня возникла эта ошибка, и я нашел несколько решений:
Глядя на строку подключения, она выглядит допустимой. Я нашел это сообщение в блоге , проблема в том, что они использовали интегрированную безопасность . Если вы работаете в IIS, вашему пользователю IIS необходим доступ к базе данных.
Если вы используете Entity Framework с транзакциями , Entity Framework автоматически открывает и закрывает соединение с каждым вызовом базы данных.Таким образом, при использовании транзакций вы пытаетесь распределить транзакцию по нескольким соединениям. Это повышается до MSDTC .
( См. Эту ссылку для получения дополнительной информации. )
Исправлено изменение моего кода на следующее:
using (DatabaseEntities context = new DatabaseEntities())
{
context.Connection.Open();
// the rest
}