source

ADO.NET 제공업체 '오라클'.관리 데이터 액세스.Client'가 컴퓨터 또는 애플리케이션 구성 파일에 등록되어 있지 않거나 로드할 수 없습니다.

manycodes 2023. 7. 5. 20:51
반응형

ADO.NET 제공업체 '오라클'.관리 데이터 액세스.Client'가 컴퓨터 또는 애플리케이션 구성 파일에 등록되어 있지 않거나 로드할 수 없습니다.

사용 중.NET4.5.1,MVC5,EF6,와 함께Oracle.ManagedDataAccess 4.121.1.0그리고.Oracle.ManagedDataAccess.EntityFramework 6.121.2.0

기존 데이터베이스(일부 테이블마다 추가)에서 모델을 생성할 수 있었습니다. 애플리케이션 빌드는 문제가 없습니다.

그러나 테스트 쿼리를 실행하여 데이터를 가져올 수 있는지 확인하려고 할 때

 public ActionResult Cancellations()
    {
        var factoryClasses = System.Data.Common.DbProviderFactories.GetFactoryClasses();
        using (var db = new Entities())
        {
            var cancelationStatuses = new[] {3, 7, 9};
           var result = db.TRANSACTIONDETAIL.Where(o => cancelationStatuses.Contains(o.TRANSACTIONSTATUSID));
           return View(result);
        }
    }

실패합니다var result = ...)와 함께Unable to find the requested .Net Framework Data Provider. It may not be installed.

찾으려 할 때 DbProviderFactories실제로 수집된 것이 없습니다.var factoryClasses =).

하지만 저는 12c4(ODAC121024를 사용하는 ODT)와 11g(ODAC1120320_32비트를 사용하는 ODT)를 설치하고 기계를 다시 시작했습니다.

데이터베이스가 11g에서 실행되고 있으며 액세스할 수 있습니다.PL/SQL developer enter image description here

Web.config는 다음과 같습니다.

<configuration>
<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" />
 <section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
.....
<connectionStrings>
.....
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" />
 <add name="Entities" connectionString="metadata=res://*/OracleDb.csdl|res://*/OracleDb.ssdl|res://*/OracleDb.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string='data source=******" providerName="System.Data.EntityClient" />           </connectionStrings>
......
<system.data>
<DbProviderFactories>
  <!-- Remove in case this is already defined in machine.config -->
  <add name="Oracle Data Provider for .NET" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  <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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>

Oracle이 에 등록되어 있지 않기 때문에 실패한 것 같습니다.DbProviderFactories아니면 어딘가

Oracle을 DbProviderFactory에 등록하려면 어떻게 해야 합니까?그렇지 않은 경우 설정에 문제가 있습니까?

Visual Studio 2017을 업데이트할 때 이 오류가 발생했습니다.VS 2017용 ODT를 다시 설치하여 오류를 해결할 수 있습니다.

Visual Studio를 닫습니다.

제어판에서 기존 Visual Studio 2017용 Oracle Developer Tools를 제거합니다.

다음 링크에서 최신 버전(ODT for VS2017_122011.exe)을 설치합니다.

http://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownloadvs2017-3806459.html

비주얼 스튜디오를 열고 솔루션을 구축합니다.지금 오류가 발생하면 안 됩니다.

알았어요.

내 안에서machine.config이미 있었습니다.

<add name="Oracle Data Provider for .NET" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

그리고 그것은 내 안에서 반복되었습니다.web.config어떤 공급자도 제공하지 못할 것입니다.그래서 꺼낸 후에:

  <add name="Oracle Data Provider for .NET" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  <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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

작동시켰습니다.

ODP.NET(Oracle)을 추가하여 해결했습니다.관리 데이터 액세스.NuGet의 엔티티 프레임워크 12c).VS2015를 EF 6.2.0으로 실행하고 있습니다.

방금 visual studio 2013(내가 설치한 VS 버전) ODT for VS2013_121025용 Oracle Developer 툴을 설치하여 이 오류를 해결했습니다.exe

언급URL : https://stackoverflow.com/questions/37271009/the-ado-net-provider-oracle-manageddataaccess-client-is-either-not-registered

반응형