Ошибка 175: указанный поставщик хранилища данных не может быть найден
Я использую VS2010 с MySQL.NET Connector. Мой проект, который раньше работал, начал отчитываться:
Ошибка 175: указанный поставщик хранилища данных не найден или недействителен.
Я не знаю почему, хотя вещи стали странными после того, как MS рекомендовала исправление к VS.
Конечно, если я добавлю в проект тестовую модель данных Entity ADO.NET, мастер модели данных Entity, который генерирует файл.edmx, не показывает провайдера данных, когда я выбираю "Создать из базы данных". Хуже того, щелчок правой кнопкой мыши и попытка выполнить "Обновить модель из базы данных..." в существующем файле.edmx отправляет VS2010 в смертельную спираль диалоговых окон, которые могут быть завершены только с помощью диспетчера задач.
Вот как я могу это исправить: Завершение работы VS2010. Удалите MySQL Connector полностью. Перезагружать. Установите MySQL Connector полностью. Перезагружать. Перезапустите VS2010.
Внезапно мой поставщик данных существует. Я могу скомпилировать мой код. А также добавить тестовые файлы.edmx. Мастер видит мою базу данных MySQL, проходит тестовое соединение и строит объектные модели с моими реляционными таблицами. Я могу очистить / восстановить столько, сколько я хочу.
Все хорошо, пока я не запустите приложение. Мое "исправление" не прилипает.
В этот момент выдается исключение, сообщающее, что объект подключения возвращает ноль, и если я перекомпилирую без изменений кода, я снова получаю ошибку 175. Вспенить, промыть, повторить.
Некоторые эксперименты, основанные на этом ответе Stackru, показывают, что строка подключения допустима, и, используя объект MySqlConnection, я могу получить доступ к базе данных и выполнить свои собственные рабочие запросы в этом состоянии.
Кажется, проблема в том, что поставщик хранилища данных каким-то образом теряется или наступает, и это влияет на способность делать вещи через EntityFrameworks.
Я ищу несколько советов о том, где искать их, если кто-то сталкивался с чем-то похожим, и есть ли какие-нибудь полезные предложения или идеи, которые вы думаете, я мог бы попробовать.
ОБНОВЛЕНИЕ - Хотя этот лакомый кусочек не решил мою проблему, он сделал VS2010 более стабильным: сразу же после удаления.NET Connector, я проверил в установленных панелях панели управления и обнаружил, что был также установлен более старый.NET Connector. Я удалил его с панели управления, перезагрузил, а затем установил новый. VS2010 теперь помнит поставщика базы данных для работы с EntityFrameworks. Очевидно, я установил новый MySQL Connector, думая, что он удалит старый, вместо этого они перешагивают друг друга.
Теперь я получаю System.ArgumentException
внутри System.Data.Entity.dll
заявив немного другое сообщение:
Указанный поставщик хранилища не найден в конфигурации или недопустим. System.ArgumentException: не удалось найти запрошенный поставщик данных.Net Framework. Это не может быть установлено.
Это происходит на System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)
метод.
ПРИМЕЧАНИЕ ПО ПЕРЕСМОТРЕНИЮ. Причина вышеприведенных вычетов в том, что VS2010 в конечном итоге снова потерял настройки. Но я смог удалить.Net Connector с панели управления и снова установить разъем без перезагрузки, и снова вернул моего поставщика данных в среду. Эта часть проблемы больше напоминает ошибку VS2010, чем проблему.NET Connector.
6 ответов
После значительных обновлений проблема исчезла - оказалось, что это всё-таки ошибка среды / драйвера.
У меня была такая же ошибка после переустановки windows, и я забыл добавить провайдера для SQlite.
Он здесь, и хотя он не упоминает об этом, он полностью поддерживает VS 2010.
Я только что перезапустил свой VS2010, и ошибка просто исчезла!!
Я недавно столкнулся с этой ошибкой, и после большого перезапуска / переустановки выяснилось, что проблема в том, что у пользователя "Соединителя" недостаточно прав для просмотра.
Основываясь на некоторых комментариях в сети, это может быть связано с тем, что поставщик не находится в GAC.
Также может быть, что старая версия - это GAC.
Проверьте, что находится в GAC, добавьте dll в GAC, если он отсутствует. Перезагрузите машину после любых изменений в GAC.