programing

Oracle ODPNet With Entity Framework 6 - 엔티티 프레임워크 데이터베이스와 호환되는 공급자를 찾을 수 없습니다.

i4 2023. 3. 12. 10:25
반응형

Oracle ODPNet With Entity Framework 6 - 엔티티 프레임워크 데이터베이스와 호환되는 공급자를 찾을 수 없습니다.

Oracle Database에서 동작하는 엔티티 프레임워크6을 사용하여 MVC 5 웹 애플리케이션을 구축하려고 합니다.ODAC 12c 릴리즈 3은 엔티티 프레임워크6 Code First 및 Code First Migrations, NuGet, .NET Framework 4.5.2 및 ODP를 지원합니다.NET, Managed Driver XML DB.에 따라

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

VS 2013 Community Edition 업데이트 4가 있습니다.

ADO를 사용하여 모델을 추가하려고 합니다.Net Entity Data Model (코드 퍼스트 포함)

Web.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도 추가했습니다.Managed Data Access 버전 4.121.2.0을 참조하여 솔루션을 재구축합니다.

ADO를 사용하여 모델을 추가하려고 했습니다.Net Entity Data Model , With Code First . 단, 마법사의 마지막 화면에서 다음 메시지가 나타납니다.

프로젝트에서 해당 엔티티 프레임워크의 최신 버전을 참조하지만 이 버전과 호환되는 엔티티 프레임워크 데이터베이스 공급자를 찾을 수 없습니다.

먼저 EF6 코드와 함께 ODAC를 사용할 수 있도록 애플리케이션을 적절하게 구성하려면 어떻게 해야 합니까?

드디어 EF6에서 ODP를 사용할 수 있게 되었습니다.

나는 그것을 작동시키기 위해 다음과 같이 했다:-

첫 번째 ODAC 12c 릴리즈 3 설치(엔티티 프레임워크6 코드 퍼스트 및 코드 퍼스트 이행 지원 포함), NuGet, .NET Framework 4.5.2 및 ODP 지원 포함).NET, Managed Driver XML DB.에 따라

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

프로젝트 레퍼런스에 2개의 레퍼런스를 추가하면 다음과 같습니다.

Oracle.ManagedDataAccess.dll

Oracle.ManagedDataAccess.Entity Framework.dll

패키지 매니저 콘솔에서 다음 명령을 실행하여 NuGet을 사용하여 EF6.1.1을 설치합니다(툴 -> NuGet Package Manager -> Package Manager Console에서 입력할 수 있습니다).

Install-Package EntityFramework -Version 6.1.1

또한 Oracle을 사용하도록 web.config 또는 web.config를 변경합니다.[ Managed Data Access ] :프로바이더와 유효한 연결 문자열을 추가합니다.

<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를 사용하여 모델을 추가하면 동작 여부를 확인할 수 있습니다.Code First를 사용한 넷엔티티 모델

보완하기 위해 모든 것을 시도해 보았습니다만, 제 경우는 다음과 같이 "default Connection Factory"를 설정함으로써 해결되었습니다.

<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

그게 누군가에게 도움이 됐으면 좋겠는데...

선택한 답변에 있는 모든 것을 시도해 보았지만 모델을 만들 수 없었습니다.선택한 답변의 코멘트에 @WAQ와 같은 문제가 있었습니다만, 에러 메세지는 표시되지 않았지만, 테이블 선택으로 건너뛰었습니다.

VS2017 15.7.4, Oracle 12g 및 EF 6.1.1을 사용하고 있습니다.

을 낮추기로 Oracle.ManagedDataAccess.EntityFramework ★★★★★★★★★★★★★★★★★」Oracle.ManagedDataAccess으로, 그리고 했습니다! 18.3.0으로 12.2.1100으로, 작동했습니다!

2015년 비주얼 스튜디오에서 이런 문제가 발생했어요.내 경우, 이는 Entity Framework 6.1.3이 지원되지 않기 때문입니다.6.1.2로 다운그레이드 한 후 동작하고 있습니다.

이 스레드에 늦게 가입했습니다.몇몇 직원이 VS2017로 업그레이드했습니다(나머지 팀원은 VS2015를 사용하고 있으며 VS2017로 업그레이드할 예정입니다).프로젝트 중 하나는 Oracle을 참조하는 것이었습니다.Managed Data Access.dll ver4.121.2.0 및 Oracle.Managed Data Access.EntityFramework.dll ver 6.121.2.0 로컬 참조 dls 경유.

모든 개발 워크스테이션에는 Oracle-odac 드라이버 ver4.122.1.0 및 ver6.122.1.0이 시스템 전체(GAC 등)에 설치되어 있습니다.

이러한 설정은 VS2015에서는 정상적으로 동작하고 있었지만, 어떤 이상한 이유로 VS2017에서는 동작하지 않았습니다.VS2017의 원인은 오라클이었습니다.Managed Data Access.dll 및 Oracle.Managed Data Access.EntityFramework.dll은 로컬에서 참조되는 dls가 ver4.120.2.0 및 ver6.120.2.0으로 업데이트되지 않는 한 엔트리 레벨의 asp.net 프로젝트의 출력 폴더에 복사되지 않습니다.

우리는 이 모든 것을 더 이상 조사할 시간이 없었지만 앞서 언급한 솔루션은 VS2017에서 작동했습니다.

저는 이 Nuget 패키지를 설치하는 것이 좋습니다.https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/

또한 6.1.2로 다운그레이드했더니 엔티티 모델 추가에 대한 모든 문제가 사라졌습니다.2015년과 2017년 Visual Studio 모두 그 이상의 버전에는 문제가 있는 것 같습니다.Oracle은 이것을 가능한 한 빨리 검토해야 합니다.

컴퓨터: Windows 7 64 비트

VS 2015

Oracle Server:

버전 12G - 32비트

성공할 때까지 내가 시도한 것:

- 다운그레이드 Oracle.Managed Data Access.Entity Framework 및 Oracle.Managed Data Access 18.3.0 ~12.2.20190115

- 빌드 모드를 모든 CPU에서 x86으로 변경

- 설정 app.config:

  <configSections>
    <section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

    <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.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>

  <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.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>

  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>

- Nuget 설치:오라클데이터 액세스x86 - v.2.112.1

Oracle.ManagedDataAccess.Entity Framework - v.12.2.20190115

Oracle.Managed Data Access - v.12.2.1100

Entity Framework - v.6.2.0

설치 완료 ODAC : ODT with ODAC122011.zip

언급URL : https://stackoverflow.com/questions/27656519/oracle-odp-net-with-entity-framework-6-entity-framework-database-compatible-pr

반응형