Oracle ODP.Net с Entity Framework 6-не удалось найти поставщика, совместимого с базой данных Entity framework

Я пытаюсь создать веб-приложение MVC 5 с Entity Framework 6, которое работает с базой данных Oracle, пытаюсь использовать Выпуск 3 ODAC 12c, который включает поддержку кода Entity Framework 6 и первых миграций кода; NuGet, .NET Framework 4.5.2; и ODP.NET, управляемый драйвер XML DB. Согласно

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html

У меня есть VS 2013 Community Edition update 4 .

пытаюсь добавление модели с помощью ADO.Net модель данных сущности, с кодом первым.

У меня есть следующее, настроенное в моем Интернете.config

    <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="Oracle.ManagedDataAccess.Client"
             type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />


  </configSections>

  <entityFramework>
    <contexts>
      <context type="Tamayz.Context.Default, Tamayz.Context">
        <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" />
      </context>
    </contexts>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" 
                type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>

Я также добавил Oracle.ManagedDataAccess версии 4.121.2.0 в качестве ссылки и перестроить решение.

Я попытался добавить модель, используя ADO.Net модель данных сущности, с кодом первым. но я получаю следующее сообщение на последнем экране мастера:

ваш проект ссылается на последнюю версию entity framework; однако поставщик базы данных Entity Framework, совместимый с этой версией, не может быть найден для подключения...

Как я могу правильно настроить свое приложение, чтобы сначала использовать ODAC с кодом EF6 ?

7 ответов


Я, наконец, смог использовать ODP с EF6.

Я сделал следующее, чтобы заставить его работать : -

первая установка ODAC 12C Release 3, которая включает поддержку Entity Framework 6 Code First и Code First Migrations; NuGet, .NET Framework 4.5.2; и ODP.NET, управляемый драйвер XML DB. Согласно

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html

добавление двух ссылок на мои ссылки на проект и они являются :

Oracle.ManagedDataAccess.dll файлы

Oracle.ManagedDataAccess.И EntityFramework.dll файлы

установка EF6.1.1 используя NuGet, выполните следующую команду в консоли диспетчера пакетов (вы можете ввести ее с помощью Tools - >NuGet Package Manager - > Package Manager Console):

Install-Package EntityFramework -Version 6.1.1

и измените свой веб.config или web.config, чтобы использовать Oracle.ManagedDataAccess, добавив поставщика и допустимую строку подключения, например:

<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <contexts>
      <context type="App.Context.Default, App.Context">
        <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" />
      </context>
    </contexts>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="Default" providerName="Oracle.ManagedDataAccess.Client" connectionString="DATA SOURCE=XE;USER ID=User" />
  </connectionStrings>

перестроить Приложение как x86 и начните использовать EF6, вы можете проверить, работает ли оно, добавив модель с помощью ADO.Net модель сущности с использованием кода First


просто в дополнение, я пробовал все, но в моем случае это было решено, установив "defaultConnectionFactory", как это:

<entityFramework>
<defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework">
</defaultConnectionFactory>
<providers>
  <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>

нашел решение здесь:https://community.oracle.com/message/13114643#13114643

надеюсь, это кому-то поможет...


для меня установка этих пакетов Nuget работает. https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/


У меня только что была эта проблема в visual studio 2015. В моем случае это было связано с тем, что Entity Framework 6.1.3 не поддерживается. После понижения до 6.1.2 он работает.


позднее присоединение к этой теме. Несколько человек обновились до VS2017 (остальные в нашей команде все еще используют VS2015 и планируют перейти на VS2017). Одним из наших проектов была ссылка на Oracle.ManagedDataAccess.dll ver4.121.2.0 & Oracle.ManagedDataAccess.И EntityFramework.dll ver6.121.2.0 через библиотеки DLL с локальной ссылкой.

все dev-рабочие станции имели oracle-odac-драйверы ver4.122.1.0 & ver6.122.1.0 установленный общесистемный (GAC etc).

этот вид установки работал просто отлично для VS2015, но по какой-то странной причине он не работал для VS2017. Виновником для VS2017 был Оракул.ManagedDataAccess.dll & Oracle.ManagedDataAccess.И EntityFramework.dll, где не копируется в выходную папку нашего начального уровня asp.net проект, если и до локально ссылочных библиотек DLL, где также обновляется до ver4.121.2.0 & ver6.121.2.0.

У нас не было времени смотреть дальше во все это, но вышеупомянутое решение работало для VS2017.


я попробовал все в выбранном ответе, но не смог создать свои модели. У меня была та же проблема, что и @WAQ в комментариях выбранного ответа, где я не получил сообщение об ошибке, но он пропустил выбор таблицы.

Я использую VS2017 15.7.4, Windows 10, Oracle 12g и EF 6.1.1.

Я решил понизить Oracle.ManagedDataAccess.EntityFramework и ' Oracle.ManagedDataAccess " от 18.3.0 до 12.2.1100, и это, наконец, сработало!


Я также понизился до 6.1.2, и все мои проблемы с добавлением модели сущности исчезли. Похоже, что как 2015, так и 2017 Visual Studio имеют проблемы с версиями выше этого. Oracle нужно посмотреть на это как можно скорее.