Подтвердить что ты не робот

Не удается найти 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;

Является ли это ошибкой альфа-версии?

4b9b3361

Ответ 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.