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
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
'source' 카테고리의 다른 글
GitHub에서 다른 사람의 코드에 기여하려면 어떻게 해야 합니까? (0) | 2023.07.05 |
---|---|
목록에서 NULL 요소 제거 (0) | 2023.07.05 |
추적되지 않은 파일만 추가 (0) | 2023.07.05 |
기본 키를 커버링 인덱스에 포함해야 합니까? (0) | 2023.07.05 |
종료하지 않고 MariaDB 데이터베이스를 남깁니다. (0) | 2023.07.05 |