2015-01-04 2 views
18

Я работаю над настольным приложением в WPF и создаю SqlRepository с LocalDB для хранения данных. Я использую следующие инструментыОшибка в команде update-database в первой миграции кода

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

я создал локальную базу данных с Microsoft SQL Server Database File (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. Но при запуске команды обновления базы данных, в NuGet менеджере пакетов консоли, я получаю ниже ошибки:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

+0

не должна быть Источник данных = (локальная) \ v11.0 - или - Источник данных = \ v11.0 –

+0

Мой один MVC проект на том же компьютере с Data Source = (localDB) \ v11.0 работает. Однако Entity Framework 5.0 используется в этом приложении. Здесь я использую 6.1.2 – Nps

+0

Удалось ли вам это решить? У меня такая же проблема :( –

ответ

50

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

+1

Я только что получил это в VS 2013, и я рад, что нашел этот ответ и не пошел по «логическому» маршруту, чтобы начать отладку моей настройки сети с помощью руководств по 6/7 шагов. Я думаю, что это вполне может быть ответ, который OP искал, позор, он не отмечен как ответ. – lukkea

+9

Почему? Это работает, но почему ?! Конечно, выпадающий проект «Default Project» делает это - wtf ... * sigh * –

+0

Этот ответ просто s прошу меня - спасибо. –

1

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

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

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

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

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

  • Перейти к меню Пуск -> Панель управления -> Средства администрирования -> Services.
  • Найти службу брандмауэра, она должна быть отключена (если нет, то справа щелкните службу и выберите «Стоп» в контекстном меню).

Примечание: Более подробную информацию об этом можно найти на официальном сайте Microsoft: Link

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

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

Примечание: Более подробную информацию об этом можно найти на официальном сайте Microsoft: Link

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

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

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

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

Приглашение от этого link

+0

Я не подключаюсь к удаленному серверу, а localDB - файл mdf, созданный на локальном компьютере. Я могу увидеть экземпляр в обозревателе объектов SQL Server и создать table/proc в Visual Studio.Это означает, что это соединение. Проблема возникает, когда я пытаюсь запустить команду update-database для первой миграции кода. Любая идея, что может быть ошибкой? – Nps

1

Попробуйте с этим 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> 
+0

Я тоже пытался это сделать ... не повезло, такая же ошибка – Nps

1

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

Смотри:

Update-Database -Verbose Использование StartUp проекта 'SCVE.Web'. < - this ir error Использование проекта NuGet 'SCVE.EntityFramework'.

6

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

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

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

2

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

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

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

0

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

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

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

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

В конце концов я обновил свой Visual Studio с 2015 Update 1 до 2015 Update 3 и

update-database 

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

Смежные вопросы