DbContext с экземпляром, отличным от SQLEXPRESS - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь подключиться к существующей базе данных (не SQLEXPRESS), но каждый раз пытаюсь получить к ней доступ. Я получаю следующую ошибку: The provider did not return a ProviderManifestToken string.

Я передаю экземпляр SqlConnection в конструктор DbContext(DbConnection, bool) и создаю экземпляр соединения в конструкторе, потому что я получал ту же ошибку, просто передавая строку соединения. Оба подхода получают одинаковую ошибку.

Это происходит в полной версии SQL Server 2008 и 2005.

ОБНОВЛЕНИЕ: Прочитайте мое решение ниже.

РЕЗЮМЕ: Всегда ищите внутреннее исключение при получении Поставщик не возвратил строку ProviderManifestToken

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Просто попробуйте открыть это соединение, не используя EF, чтобы проверить правильность строки подключения, и вся информация для входа действительна, потому что EF иногда маскирует эти ошибки с помощью «Поставщик не возвратил ProviderManifestToken» , что в таких случаяхзначит не может подключиться к базе данных.

0 голосов
/ 28 октября 2011

Кажется, что это была проблема с подключением, и всякий раз, когда сущностная структура обнаруживает проблему с подключением, она сообщает вам об этом с помощью этого блестящего сообщения, которое ничего не значит или не имеет отношения к реальной проблеме.EF также может выдать вам эту ошибку при инициализации базы данных, если у вас нет доступа к поиску существующей базы данных, где на самом деле это легко сделать.Хорошо, что они включили внутреннее исключение, и я смог понять это.

Я смог связаться с сервером после включения службы браузера SQL.Что-то было не так с подключением, и запуск службы вызвал правильную функциональность.Служба снова остановлена, но соединение все еще установлено.

Кстати, внутреннее исключение было: ОШИБКА 40 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: Named Pipes Provider, *error: 40 - Could not open a connection to SQL Server)

...