Ответ 1
У меня была аналогичная проблема, и я исправил ее, когда я изменил "проект запуска" с другого модуля на модуль, содержащий ссылки на все другие проекты в решении. Щелкните правой кнопкой мыши модуль → нажмите "Установить как проект StartUp"
Я работаю над настольным приложением в WPF и создаю SqlRepository с LocalDB для хранения данных. Я использую следующие инструменты
Я создал локальную базу данных с конфигурацией файла базы данных 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 - Ошибка локализации сервера/экземпляра Указано)
У меня была аналогичная проблема, и я исправил ее, когда я изменил "проект запуска" с другого модуля на модуль, содержащий ссылки на все другие проекты в решении. Щелкните правой кнопкой мыши модуль → нажмите "Установить как проект StartUp"
Ответ Диего правильный.
Эта проблема возникает, когда в проекте, отмеченном как проект запуска, нет строки подключения. Затем EF пытается подключиться к некоторому механизму базы данных по умолчанию для выполнения обновления. В моем случае он пытался использовать экспресс, и по какой-то причине он не мог подключиться. И ошибка была брошена.
Запустите свою "базу данных обновлений" с опцией "-Verbose". Одна из строк показывает, какой проект StartUp используется. Проверьте строку подключения в этом проекте или измените проект запуска на тот, у которого есть правильная строка подключения. Это решает проблему.
Как объясняется в других ответах, проблема обычно возникает из-за неправильного исходного проекта в консоли диспетчера пакетов.
В моем случае консоль игнорировала значение, которое я выбрал в раскрывающемся списке Default Project, а также параметр -StartUpProjectName
и воспроизводит неправильное поведение при попытке подключиться к некоторому механизму базы данных по умолчанию, как описывает ответ Mikk, в моем случае используя механизм SqlExpress.
Моя проблема была вызвана неправильной конфигурацией решения: если ваше решение имеет несколько проектов и предназначено для запуска с параметром конфигурации "Несколько проектов запуска", но вы только что загрузили его из своего репозитория управления исходным кодом, то это возможно, что для решения применяется вариант конфигурации по умолчанию "Проект с одним запуском" (это значение конфигурации обычно не проверяется в элементе управления исходным кодом). В этом случае консоль диспетчера пакетов просто игнорирует проект запуска, выбранный в его комбо, и просто применяет проект запуска по умолчанию в решении, у которого может не быть строки подключения, как указано в ответе Mikk.
Поэтому я исправил его, изменив свойства решения: Common properties
/Startup project
/Выберите Multiple startup projects
вместо Single startup project
, после чего консоль диспетчера пакетов примет имя проекта и обновит правильную базу данных.
Произошла ошибка, связанная с сетью или конкретным экземпляром, в то время как установление соединения с SQL Server. Сервер не найден или был недоступен. Проверьте правильность имени экземпляра и SQL Server настроен для удаленного подключения. (поставщик: SQL Сетевые интерфейсы, ошибка: 26 - Ошибка локализации сервера/экземпляра Указано)
Это сообщение об ошибке информирует вас о невозможности подключения к SQL Server
. Возможные причины и их устранение описаны ниже:
1) SQL Server не запущен. Запуск этого процесса позволит вам увидеть ваш экземпляр SQL Server/в раскрывающемся списке доступных SQL-серверов.
2) Брандмауэр блокирует порт 1433 (стандартный порт MSSQL для соединений). Его можно отключить следующим образом:
Примечание. Дополнительную информацию об этом можно найти на официальном сайте Microsoft: Ссылка
3) Протокол TCP/IP отключен для протоколов MSSQL. Чтобы включить его, см. Следующие шаги:
Примечание. Дополнительную информацию об этом можно найти на официальном сайте Microsoft: Ссылка
4) Убедитесь, что ваш механизм базы данных настроен на прием удаленных подключений (если вы используете централизованную базу данных):
5) Если вы используете именованный экземпляр SQL Server, убедитесь, что вы используете это имя экземпляра в своих строках подключения. Обычно формат, необходимый для указания сервера базы данных, является машинным именем \instancename.
6) Убедитесь, что ваша учетная запись имеет разрешение на доступ к базе данных, которую вы использовали во время входа в систему. Альтернатива: Если вы все еще не можете получить какое-либо соединение, вам может понадобиться создать учетную запись SQL на сервере, соответствующий пользователь SQL в соответствующей базе данных, и просто использовать данные для входа в систему имени пользователя и пароля для подключения к SQL Server.
Ссылка на это ссылка
Попробуйте с помощью этой 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>
Я решил эту ошибку изменить первоначальный проект на Entity Project.
Облик:
Обновление-База данных -Вербоз Использование проекта StartUp 'SCVE.Web'. < - this ir error Использование проекта NuGet "SCVE.EntityFramework".
Я смог решить это с помощью добавления параметров в команду update-database:
update-database -StartupProjectName MyApp.Web -ConnectionStringName MyAppConnectStringInWebConfig
Если вы пытаетесь подключиться к 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>
У меня была такая же проблема с недавно созданным проектом ASP.NET.
Сначала я попытался установить проект запуска, как указано выше. Не было выбранного проекта запуска, и я не смог его выбрать.
В конечном итоге я обновил свою Visual Studio с 2015 года Обновление с 1 по 2015 год, обновление 3 и
update-database
выполняется без проблем.