проблема с базой данных entity framework — при установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром

#sql-server #asp.net-mvc #entity-framework #appharbor

#sql-server #asp.net-mvc #entity-framework #appharbor

Вопрос:

 A network-related or instance-specific error occurred while establishing a connection to SQL Server
  

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

Ошибка возникает в этой строке в конструкторе SimpleMembershipInitializer в Filters Filters/InitializeSimpleMembershipAttribute.cs

 if (!context.Database.Exists())
  

Теперь, если я установлю для своего web.config значение

 <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework" />
</entityFramework>
  

он работает только локально, но я предполагаю, что он использует локальную базу данных. Прямо сейчас моя entity framework в web.config выглядит так

 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  

У меня есть другое приложение, в котором я использую ту же службу хостинга и бесплатную базу данных (appharbor и SQL Server Yocto), и оно работает просто отлично. Недавно я настроил новое приложение и базу данных, и это не работает. Я могу нормально подключиться к базе данных в SQL server и расширить DataConnections -> MyContextName в Visual Studio 2012, поэтому я знаю, что строка подключения не является проблемой.

Мне интересно, есть ли проблема на сервере, на котором размещена база данных, и у меня нет к ней доступа.

У меня нет идей о том, как решить эту проблему. Спасибо.

Комментарии:

1. Находится ли новая база данных в том же экземпляре SQL Server?

Ответ №1:

Проблема, вероятно, заключается в том, что имя строки подключения не было настроено должным образом и / или не соответствует соглашениям entity Framework (что немного отличается между версиями Entity framework). Если вы можете подключиться к базе данных со своего компьютера или со страницы администратора SQL server, проблема вряд ли связана с самой базой данных / сервером баз данных.

Посмотрите на это обсуждение, где другой пользователь столкнулся с аналогичной проблемой. Возможно, вам просто нужно задать правильное имя строки подключения для контекста базы данных entity framework. Также убедитесь, что у вас настроены миграции для создания базы данных.

Это может объяснить, почему он работает локально с локальной фабрикой подключения к БД. Я подозреваю, что база данных создается на вашем локальном SQL Server, и она может делать это без ограничений. В AppHarbor вам необходимо использовать предоставленную базу данных и строку подключения, поскольку вы не можете создавать базы данных самостоятельно. Вы можете подтвердить, так ли это, подключившись к вашему локальному серверу базы данных и перечислив доступные базы данных.

Я также могу порекомендовать использовать этот пример приложения и связанные с ним сообщения в блоге о выполнении миграций и настройке entity framework (4.3) в AppHarbor.

Комментарии:

1. большое вам спасибо! проблема заключалась в том, что строка подключения по умолчанию в accountmodel.cs была неправильной!