우리는 현재 닷넷 프레임 워크 OracleClient (사용되지 않을 예정 임)를 사용하기 때문에 Devart의 오라클 용 dotConnect 평가판을 사용하여 간단한 개념 증명 작업을 시도하고 있습니다. Oracle Client 또는 Instant Client가 없어도 연결할 수있는 요구 사항이 있습니다. 이러한 이유로 나는 상사에게 dotConnect가 직접 모드와 Enterprise Library 5 (우리의 데이터 액세스 레이어에서 사용됨)로 작업 할 수있는 능력을 갖추고 있다는 사실을 증명하기 위해 노력하고 있습니다. 필자는 Devart에서 제공 한 예제를 따라 테스트 응용 프로그램의 app.config에 사용자 지정 공급자 맵을 추가했습니다. 이 모든 것은 IDe와 컴파일 된 응용 프로그램 모두에서 내 개발 컴퓨터에서 작동하는 것처럼 보였으므로 간단한 설치 및 배포 프로젝트에서 랩핑하고 msi를 빌드 한 다음 바닐라 Win 7 x86 가상 시스템에 설치했습니다 테스트를 위해 Oracle Client가 설치되어 있지 않습니다.Devart dotConnect 오라클 및 엔터프라이즈 라이브러리 사용자 지정 공급자 매핑
그냥 작동하지 않으려 고합니다. 이 테스트는 간단한 select 문을 실행하고 결과를 listview에 표시합니다 (없는 경우에는 메시지를받습니다). 나는 결과 자체에 대해 실제로 괴롭히지 않고, 단지 그것을 얻는 행위입니다. 여기
Dim db As Database = EnterpriseLibraryContainer.Current.GetInstance(Of Database)(EnvironmentName)
은 app.config 파일에서 제공 매핑입니다 :
Activation error occured while trying to get instance of type Database, key "Testing26_devart"
여기에 코드의 잘못된 라인이다 : 문제는 내가 테스트를 실행할 때 나는 지금까지 인정 EL 오류가있다
<add name="Testing26_devart" connectionString="User Id=Testing26;Password=Testing26;Server=ORACLE-SERVER;Direct=True;Sid=DEVORA;Port=1523;"
providerName="Devart.Data.Oracle" />
: 여기
<add databaseType="Devart.Data.Oracle.EnterpriseLibrary.OracleDatabase, Devart.Data.Oracle.EnterpriseLibrary, Version=3.5.4456.40828, Culture=neutral, PublicKeyToken=null" name="Devart.Data.Oracle" />
은의 app.config에서 연결 문자열입니다
나는 (다른 것들 중에서) 잘못된 연결 문자열 이름을 사용함으로써이 오류가 발생할 수 있음을 알고 있지만 처음부터 설정 파일에서이 문자열을 검색하기 때문에 이것이 정확한지 알 수 있습니다. 또한 이는 개발 환경에서 사용 된 설정과 정확히 동일합니다.
Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "Microsoft.Practices.EnterpriseLibrary.Data.Database", name = "Testing26_devart".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type Database cannot be constructed. You must configure the container to supply this value.
내가 공급자 매핑 내가 System.Data.OracleClient
에 대한 연결 문자열의 공급자를 변경 한 후 모든 연결 문자열을 찾는 데에 아무런 문제가없는 경우 때문에 비난하는 대신 지원되지 않는 뿌려 의심 : 내부 예외는 이것이다 키워드 Direct
(dotConnect 다이렉트 모드 스위치에서 가져온 것)입니다.
공급자 매핑과 관련하여 내가 잘못한 것을 볼 수 없습니다. 이전에는 사용하지 않았지만 EL 구성 도구를 사용하여 올바른 사용자 라이브러리가 실행 파일 (및 기타 EL 라이브러리)에 포함되도록했습니다. 몇 가지 예를 살펴 보았습니다. 모두 올바른 구성을 제안 했으므로 실종 되었습니까? 이것은 나를 미치게합니다.
Tuzo 당신이 자리를 잡았습니다 - dotConnect의 설치 프로그램이 machine.config에 항목을 추가하지만 어디서나 문서에서 볼 수는 없으므로 개발 기계에서 완벽하게 작동합니다. 섹션을 app.config에 추가하자마자 예상대로 정확하게 실행되었습니다. 고맙습니다. 2 일 동안 fuslogvw, 프로세스 모니터 등을 사용하여 잘못된 것을 해결하려고 노력했습니다. –
@StevePettifer, 제품 문서 (http://www.devart.com/dotconnect/oracle/docs/Deployment.html)에서이 기사에 주목하지 않은 것 같습니다. 필요한 모든 정보를 찾을 수 있습니다. – Devart
@Devart - 나는 그 문서를 읽었지만 이미 알지 못하면 DbProviderFactories를 상당히 추상화하는 (새로운 것으로 밝혀진) 데이터베이스 인스턴스를 가져 오는 새로운 EL5 방법을 사용할 때 이것을 필요로하는지 분명하지 않습니다. 또한 설치 관리자가이를 키 누락 된 machine.config에 추가한다고 말하지 않습니다. 나는 당신이 machine.config에 DbProviderFactories 엔트리를 추가해서는 안되며, 대신 app.config/web.config에 추가 되어야만하는 문서에서 명확하게 밝혀야한다. (또는, 사용자가 원한다면, machine.config)를 수동으로 설치하십시오. –