После загрузки EF6 с помощью nuget и попытки запустить мой проект, он возвращает следующую ошибку:
Не найден поставщик Entity Framework для поставщика ADO.NET с инвариантным именем «System.Data.SqlClient». Убедитесь, что поставщик зарегистрирован в разделе «entityFramework» файла конфигурации приложения. См. Http://go.microsoft.com/fwlink/?LinkId=260882 для получения дополнительной информации.
entity-framework
Фернандо Веллозо
источник
источник
providers
иprovider
прочее, так что подумайте об его удалении?public BaseStorage(): base ("RaptorDB") {}
, BaseStorage () наследует от DbContext в EF5, все работает отлично, еще не в EF6.Ответы:
Я только что попал в ту же проблему, и это выглядит как EntityFramework, хотя установленный из диспетчера пакетов NuGet не был правильно установлен в проекте.
Мне удалось это исправить, выполнив следующую команду в консоли диспетчера пакетов :
источник
-Pre
опцию скажите nuget, чтобы установить пререлизные пакеты. Я не рекомендую использовать это. У меня похожая ошибка, но решение было просто установить EntityFramework в хост-проекте. Я установил его в библиотеке классов, но не в главном проекте (web / console / или где-либо еще),EntityFramework.SqlServer.dll
в папку Debug - проблема решена.Вы добавили EF в проект библиотеки классов. Вам также нужно добавить его в проект, который ссылается на него (ваше консольное приложение, веб-сайт или что-то еще).
источник
EntityFramework.SqlServer.dll
, что копируется в каталог bin. Добавление строгой ссылки может нарушить вашу архитектуру (если вы создали несколько уровней, ваша исполняющая сборка верхнего уровня даже не должна знать об EF). Вместо этого вы можете убедиться, что поставщик SQL Server скопирован. См., Например, stackoverflow.com/a/19130718/870604Вам не нужно устанавливать Entity Framework в вашем консольном приложении, вам просто нужно добавить ссылку на сборку EntityFramework.SqlServer.dll. Вы можете скопировать эту сборку из проекта библиотеки классов, который использует Entity Framework, в папку LIB и добавить ссылку на нее.
В итоге:
Я надеюсь, что это помогает.
источник
Вы также можете увидеть это сообщение, если забыли включить «EntityFramework.SqlServer.dll».
Похоже, это недавно добавленный файл в EF6. Первоначально я не включил его в свой модуль слияния и столкнулся с проблемой, перечисленной здесь.
источник
Вместо добавления EntityFramework.SqlServer в хост-проект, вы можете обеспечить статическую ссылку на него из вашего проекта Model / entity, подобного этому
Это сделает процесс сборки включающим сборку с хост-проектом.
Больше информации в моем блоге http://andersmalmgren.com/2014/08/20/implicit-dependencies-and-copy-local-fails-to-copy/
источник
При установке Entity Framework 6 через
Nuget
. EntityFramework.SqlServer иногда пропускает другой исполняемый файл. Просто добавьтеNuget
пакет в этот проект.Иногда выше не работает для тестового проекта
Чтобы решить эту проблему в тестовом проекте, просто поместите этот метод в тестовый проект:
Этот метод никогда не вызывался, но, по моим наблюдениям, компилятор удалит все «ненужные» сборки и без использования
EntityFramework.SqlServer
материала тест не пройден.источник
EntityFramework.SqlServer
добавляется в вашу библиотеку классов, но если он не используется, он не будет помещен в выходную папку вашего приложения. Я исправил проблему, добавив anExecutionStrategy
, что мне еще нужно было сделать, поэтому добавление строки, какSetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
внутриDbConfiguration
класса, решило проблему.Добавить эту функцию
в контекстный класс базы данных в классе библиотеки и отсутствующая DLL EntityFramework.SqlServer.dll будет скопирована в правильные места.
,
источник
FixEfProviderServicesProblem
я пробовал в конструкторе, не повезло.Ничто из этого не помогло мне. Я нашел решение в другом вопросе stackoverflow . Я добавлю это здесь для удобства:
источник
Я получил ту же ошибку при использовании Entity Framework 6 с SQL Server Compact 4.0. Статья о MSDN для провайдеров Entity Framework для EF6 оказалась полезной. Выполнение соответствующих команд провайдера в виде пакетов nuget на консоли диспетчера пакетов может решить проблему, так как пакеты NuGet автоматически добавят регистрации в файл конфигурации. Я побежал,
PM> Install-Package EntityFramework.SqlServerCompact
чтобы решить проблему.источник
Сегодня столкнулся с этой проблемой при работе с набором веб-сервисов, каждый в разных проектах, и отдельным проектом, содержащим интеграционные тесты для некоторых из этих сервисов.
Я использовал эту настройку в течение некоторого времени с EF5, без необходимости включать ссылки на EF из Интеграционного тестового проекта.
Теперь, после обновления до EF6, мне кажется, что мне нужно включить ссылку на EF6 в проект интеграционного тестирования, даже если он там не используется (в значительной степени, как указано выше пользователем 3004275 ).
Признаки того, что вы столкнулись с той же проблемой:
Третий момент - это то, что меня оттолкнуло на некоторое время, и я до сих пор не уверен, зачем это нужно. Добавление ссылки на EF6 в моем проекте Integration Test решило это в любом случае ...
источник
Когда ошибка возникает в тестовых проектах, самое красивое решение - украсить тестовый класс:
источник
Для запуска проекта, который ссылается на проект, в котором используется Entity Framework, требуются следующие две сборки в папке bin:
Добавление
<section>
к<configSections>
файлу .config в запускаемом проекте делает первую сборку доступной в этом каталоге bin. Вы можете скопировать это из файла .config вашего проекта Entity Framework:Чтобы сделать второй DLL-файл доступным в папке bin, хотя это и нецелесообразно, можно сделать ручную копию из папки bin проекта Entity Framework. Лучшая альтернатива - добавить в события после сборки проекта Entity Framework следующие строки, которые автоматизируют процесс:
источник
Я просто столкнулся с этой проблемой сегодня. У меня есть библиотека классов репозитория данных с пакетом EF63 NuGet и консольное приложение для тестирования, которые имеют ссылку только на проект библиотеки классов. Я создал очень простую команду после сборки, которая копирует EntityFramework.SqlServer.dll из папки Bin \ Debug библиотеки классов в папку Bin \ Debug консольного приложения, и проблема решена. Не забудьте добавить раздел entityFramework в файл .config консольного приложения.
источник
Добавьте ниже в ваш app.config.
источник
<configSections>
-<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
Удаление BIN-папки сделало это для меня
источник
Вы должны принудительно установить статическую ссылку на сборку EntityFramework.SqlServer.dll , но вместо добавления фиктивного кода вы можете сделать это более красивым способом:
Если у вас уже есть класс DbConfiguration :
Если у вас нет класса DbConfiguration, вы должны поместить следующий код при запуске приложения (перед использованием EF):
источник
Я только что переустановил Entity Framework, используя Nuget. И следуйте инструкциям, написанным по ссылке ниже: http://robsneuron.blogspot.in/2013/11/entity-framework-upgrade-to-6.html
Я думаю, что проблема будет решена.
источник
Разверните файл YourModel.edmx и откройте класс YourModel.Context.cs в YourModel.Context.tt.
Я добавил следующую строку в раздел использования, и ошибка была исправлена для меня.
using SqlProviderServices = System.Data.Entity.SqlServer.SqlProviderServices;
Возможно, вам придется добавлять эту строку в файл каждый раз, когда файл создается автоматически.
источник
У меня также была похожая проблема. Моя проблема была решена следующим образом:
источник
похоже, что никто не упомянул, сначала проверяя, установлен ли System.Data.SqlClient в системе и делается ли на него ссылка.
я решил свою проблему, установив System.Data.SqlClient и добавив нового поставщика в app.Config
источник
Также убедитесь, что ваш стартовый проект - это проект, содержащий ваш dbcontext (или соответствующий app.config). Мой пытался запустить проект веб-сайта, который не имел всех необходимых параметров конфигурации.
источник
Я перепробовал почти все вышеперечисленное и ничего не получалось.
Только тогда , когда я поставил ссылки библиотеки DLL в проекте по умолчанию
EntityFramework
иEntityFramework.SqlServer
свойства ,Copy Local
чтобыTrue
сделал это начать работать!источник
Всем нужно ваше внимание, что два dll EntityFramework.dll и EntityFramework.SqlServer.dll являются библиотекой уровня DataAccess. И их использование не логично, или любой другой layer.it решает вашу проблему, но это не логично.
логично, что атрибут enitiess удаляет и заменяет их на Fluent API. Это реальное решение
источник
У меня было одно консольное приложение и библиотека классов. В библиотеке классов я создал Entity Data Model (щелкните правой кнопкой мыши Class Library> Add> New Item> Data> ADO.NET Entity Data Model 6.0) и поместил ссылку в консольное приложение. Итак, у вас есть консольное приложение, которое имеет ссылку на библиотеку классов, а внутри библиотеки классов у вас есть модель EF. У меня была та же ошибка, когда я пытался получить некоторые записи из таблицы.
Я решил эту проблему, выполнив следующие действия:
Это все, что я должен был сделать, и все работало идеально.
Надеюсь, это помогло.
источник
У меня такая же ошибка. Странно, что это происходит только всякий раз, когда я использую свой dbContext для запроса к любой моей модели или получаю ее список, например:
Мы попытались переустановить Entity Framework, ссылаться на него правильно, но безрезультатно.
К счастью, мы попытались проверить Nuget на наличие
ALL
решений, затем обновить все или убедиться, чтоeverything
это одна и та же версия, потому что мы заметили, что два проекта имеют разные версии EF в веб-проекте. И это работает. Ошибка ушла.Вот скриншот о том, как управлять Nuget для всех решений:
источник
Вы просто отсутствует ссылка на EntityFramework.SqlServer.dll. Для проектов EntityFramework, использующих SQL Server, вам необходимо обратиться к двум файлам: EntityFramework.SqlServer.dll и EntityFramework.dll
источник
У меня была связанная проблема при переходе с БД CE на Sql Server в Azure. Просто потратил 4 часа, пытаясь решить эту проблему. Надеюсь, это может спасти кого-то похожую судьбу. Для меня у меня была ссылка на SqlCE в моем файле packages.config. Удаление его решило всю мою проблему и позволило мне использовать миграции. Microsoft для другой технологии с излишне сложными проблемами установки и настройки.
источник
У меня возникла та же проблема, я просто скопировал файл конфигурации приложения из проекта, который содержал DBContext, в мой тестовый проект.
источник
У меня было выброшено идентичное исключение. я включен
и все снова работает
источник
Как видно из сообщения, нам нужно добавить провайдера System.Data.SqlClient, поэтому нам нужно установить пакет nuget EntityFramework с двумя dll, но если мы разрабатываем только консольное приложение, то нам просто нужно добавить ссылку на EntityFramework.SqlServer.dll
источник