Не удается найти System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer
Я создаю DbContext из SqlConnection. Когда я его использую, я получаю следующую ошибку:
Поставщик Entity Framework типа 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' для поставщика ADO.NET 'System.Data.SqlClient' не удалось загрузить.
Я использую 6.0.0-alpha2-11210.
Я нашел это странным, так как у меня есть ссылка на Entity.SqlServer и что мне удалось "исправить его", поставив следующую строку кода перед запросом:
var patch_only = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
Является ли это ошибкой альфа-версии?
Ответы
Ответ 1
Надеюсь, я не опаздываю. Я использую ASP.NET MVC
4 и Entity Framework 6 alpha 3
и сталкивался с аналогичной проблемой.
В моем решении есть несколько проектов. 2 основных проекта:
MyProject.Infrastructure.EntityFramework
MyProject.Web
В первом проекте я бы установил все мои репозитории, DbContext
и т.д. В этом проекте у меня есть 2 ссылки:
EntityFramework
EntityFramework.SqlServer
Второй проект - мой сайт. Он использует репозитории в первом проекте для возврата моих данных. Например:
private readonly IMyRepository myRepository;
public MyController(IMyRepository myRepository)
{
this.myRepository = myRepository;
}
public ActionResult Details(int id)
{
MyObject myObject = myRepository.FindById(id);
return View();
}
Вот у меня были мои проблемы, называя FindById
.
Все, что я сделал, это добавить следующую ссылку на мой сайт:
EntityFramework.SqlServer
В моем web.config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
И под закрывающим тегом system.webServer
:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
Надеюсь, это поможет.
Ответ 2
Что вы сделали, создает ссылку на EntityFramework.SqlServer.dll. Это гарантирует, что эта сборка будет скопирована в папку bin проектов, используя вашу сборку доступа к данным.
Вы можете сделать то же самое, добавив что-то вроде следующего в сборку доступа к данным:
Type _Hack = typeof(System.Data.Entity.SqlServer.SqlProviderServices)
Ответ 3
Проблема заключается в ссылке "EntityFramework.SqlServer".
В моем проекте, когда я добавил Entity Framework 6.0.1 с помощью NuGet на уровне доступа к данным, я получил ту же ошибку на стороне клиента, так как клиентская сторона не имеет этой ссылки.
Итак, я решил проблему, добавив эту ссылку на клиентскую сторону.
Ответ 4
Я использую EF 4 и EF 6 два разных проекта в одном решении.
После использования NuGet для EF 6.0 все ссылки на EF 4, которые удалены в моем тестовом проекте. Мне пришлось снова удалить EF6 из проекта и добавить ссылки на System.Data.Entity для EF4.
Чтобы получить доступ к данным через EF6 в тестовом проекте, мне пришлось вручную ссылаться на EntityFramework.SqlServer.dll(4.5) и использовать рекомендацию hack (выше).
Не было необходимости делать какие-либо изменения в app.config моего тестового проекта.
нет не
<section name="entityFramework" ...
и no
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> ...
Ответ 5
@LeLong37
У меня была такая же ошибка, как и вы: "... Поставщик службы Entity Framework не найден для поставщика" ADO.NET "System.Data.SqlServerCe.4.0..."
Я решил это, добавив ссылку на
"EntityFramework.SqlServerCompact" из каталога "packages\EntityFramework.SqlServerCompact.6.0.0-rc1\lib\net40"
надеюсь, что это поможет
Ответ 6
Я добавил скринкаст в Youtube, описывая это и решение примерно через 6 минут. Я сделал это, потому что решение, предоставленное Fabrice, не работает, когда вы работаете с Team Build, который работает с той же проблемой.
Ответ 7
Если у вас возникли проблемы с новым сайтом MVC из шаблона:
1) Удалите Microsoft.ASPNet.Identity.EntityFramework(он спросит вас, хотите ли вы удалить Entity Framework - продолжайте и делайте это.)
2) Установите платформу Entity Framework
3) Переустановите Microsoft.ASPNET.Identity.EntityFramework
Теперь нужно работать.
Ответ 8
Я решил проблему, скопировав два файла
EntityFramework.SqlServer.dll
EntityFramework.SqlServer.xml
в /bin
.