Подтвердить что ты не робот

Ошибка в команде update-database в первой миграции кода

Я работаю над настольным приложением в WPF и создаю SqlRepository с LocalDB для хранения данных. Я использую следующие инструменты

  • Сообщество Visual Studio 2013 с обновлением 2
  • Entity Framework 6.1.2 для первой миграции кода

Я создал локальную базу данных с конфигурацией файла базы данных Microsoft SQL Server (SqlClient). База данных создана успешно и ниже - строка подключения, извлеченная из Sql

Data Source=(LocalDB)\v11.0;Initial Catalog=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False

Я использую ту же строку соединения в app.config. Я могу просмотреть объект базы данных в SQL Server Database explorer в Visual Studio. Но когда вы запускаете команду update-database в консоли менеджера пакетов Nuget, я становлюсь ниже ошибки:

Произошла ошибка, связанная с сетью или конкретным экземпляром, в то время как установление соединения с SQL Server. Сервер не найден или был недоступен. Проверьте правильность имени экземпляра и SQL Server настроен для удаленного подключения. (поставщик: SQL Сетевые интерфейсы, ошибка: 26 - Ошибка локализации сервера/экземпляра Указано)

4b9b3361

Ответ 1

У меня была аналогичная проблема, и я исправил ее, когда я изменил "проект запуска" с другого модуля на модуль, содержащий ссылки на все другие проекты в решении. Щелкните правой кнопкой мыши модуль → нажмите "Установить как проект StartUp"

Ответ 2

Ответ Диего правильный.

Эта проблема возникает, когда в проекте, отмеченном как проект запуска, нет строки подключения. Затем EF пытается подключиться к некоторому механизму базы данных по умолчанию для выполнения обновления. В моем случае он пытался использовать экспресс, и по какой-то причине он не мог подключиться. И ошибка была брошена.

Запустите свою "базу данных обновлений" с опцией "-Verbose". Одна из строк показывает, какой проект StartUp используется. Проверьте строку подключения в этом проекте или измените проект запуска на тот, у которого есть правильная строка подключения. Это решает проблему.

Ответ 3

Как объясняется в других ответах, проблема обычно возникает из-за неправильного исходного проекта в консоли диспетчера пакетов. В моем случае консоль игнорировала значение, которое я выбрал в раскрывающемся списке Default Project, а также параметр -StartUpProjectName и воспроизводит неправильное поведение при попытке подключиться к некоторому механизму базы данных по умолчанию, как описывает ответ Mikk, в моем случае используя механизм SqlExpress.

Моя проблема была вызвана неправильной конфигурацией решения: если ваше решение имеет несколько проектов и предназначено для запуска с параметром конфигурации "Несколько проектов запуска", но вы только что загрузили его из своего репозитория управления исходным кодом, то это возможно, что для решения применяется вариант конфигурации по умолчанию "Проект с одним запуском" (это значение конфигурации обычно не проверяется в элементе управления исходным кодом). В этом случае консоль диспетчера пакетов просто игнорирует проект запуска, выбранный в его комбо, и просто применяет проект запуска по умолчанию в решении, у которого может не быть строки подключения, как указано в ответе Mikk.

Поэтому я исправил его, изменив свойства решения: Common properties/Startup project/Выберите Multiple startup projects вместо Single startup project, после чего консоль диспетчера пакетов примет имя проекта и обновит правильную базу данных.

Ответ 4

Произошла ошибка, связанная с сетью или конкретным экземпляром, в то время как установление соединения с SQL Server. Сервер не найден или был недоступен. Проверьте правильность имени экземпляра и SQL Server настроен для удаленного подключения. (поставщик: SQL Сетевые интерфейсы, ошибка: 26 - Ошибка локализации сервера/экземпляра Указано)

Это сообщение об ошибке информирует вас о невозможности подключения к SQL Server. Возможные причины и их устранение описаны ниже:

1) SQL Server не запущен. Запуск этого процесса позволит вам увидеть ваш экземпляр SQL Server/в раскрывающемся списке доступных SQL-серверов.

  • Перейдите в меню Пуск → Панель управления → Средства администрирования → Сервисы.
  • В списке служб найдите SQL Server (имя экземпляра, по по умолчанию это EZPARTS5) и проверьте его статус, он должен быть запущен
    (если он не запущен, щелкните правой кнопкой мыши на SQL Server и выберите
    Начните с контекстного меню).

2) Брандмауэр блокирует порт 1433 (стандартный порт MSSQL для соединений). Его можно отключить следующим образом:

  • Перейдите в меню Пуск → Панель управления → Средства администрирования → Услуги.
  • Найти службу брандмауэра, она должна быть отключена (если нет, то правильно щелкните службу и выберите "Стоп" в контекстном меню).

Примечание. Дополнительную информацию об этом можно найти на официальном сайте Microsoft: Ссылка

3) Протокол TCP/IP отключен для протоколов MSSQL. Чтобы включить его, см. Следующие шаги:

  • Перейдите в диспетчер конфигурации SQL Server в меню "Пуск".
  • Укажите параметры протокола TCP/IP в конфигурации SQL Server Менеджер.
  • Перезагрузите компьютер.

Примечание. Дополнительную информацию об этом можно найти на официальном сайте Microsoft: Ссылка

4) Убедитесь, что ваш механизм базы данных настроен на прием удаленных подключений (если вы используете централизованную базу данных):

  • Откройте SQL Server Management Studio.
  • Щелкните правой кнопкой мыши экземпляр SQL Server → Свойства → Соединения → Установите флажок Разрешить удаленные подключения к этому серверному ящику.
  • Перейдите в раздел "Общие" и проверьте имя SQL Server, указанное в поле Имя.

5) Если вы используете именованный экземпляр SQL Server, убедитесь, что вы используете это имя экземпляра в своих строках подключения. Обычно формат, необходимый для указания сервера базы данных, является машинным именем \instancename.

6) Убедитесь, что ваша учетная запись имеет разрешение на доступ к базе данных, которую вы использовали во время входа в систему. Альтернатива: Если вы все еще не можете получить какое-либо соединение, вам может понадобиться создать учетную запись SQL на сервере, соответствующий пользователь SQL в соответствующей базе данных, и просто использовать данные для входа в систему имени пользователя и пароля для подключения к SQL Server.

Ссылка на это ссылка

Ответ 5

Попробуйте с помощью этой ConnectionString:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Initial Catalog=testdb;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

Ответ 6

Я решил эту ошибку изменить первоначальный проект на Entity Project.

Облик:

Обновление-База данных -Вербоз Использование проекта StartUp 'SCVE.Web'. < - this ir error Использование проекта NuGet "SCVE.EntityFramework".

Ответ 8

Если вы пытаетесь подключиться к Sql Server вместо localdb, убедитесь, что соединение по умолчанию factory в файле web.config выглядит следующим образом:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.\SQLEXPRESS2012; Integrated Security=True; MultipleActiveResultSets=True" />
  </parameters>
 </defaultConnectionFactory>

Ответ 9

У меня была такая же проблема с недавно созданным проектом ASP.NET.

Сначала я попытался установить проект запуска, как указано выше. Не было выбранного проекта запуска, и я не смог его выбрать.

В конечном итоге я обновил свою Visual Studio с 2015 года Обновление с 1 по 2015 год, обновление 3 и

update-database

выполняется без проблем.