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
'programing' 카테고리의 다른 글
python JSON은 첫 번째 레벨에서만 키를 가져옵니다. (0) | 2023.03.12 |
---|---|
Dart: 모든 요소가 인용된 맵을 JSON으로 변환 (0) | 2023.03.12 |
각도에서의 알파벳 순으로 정렬 드롭다운JS (0) | 2023.03.12 |
UI 라우터 조건부 UI 뷰? (0) | 2023.03.12 |
디버깅하는 동안 오류가 발생했습니다. 2열의 토큰 '{' 키가 잘못되었습니다. (0) | 2023.03.12 |