2010-06-21 3 views
0

.NET 3.5 응용 프로그램에서 NHibernate를 사용하여 C#으로 작성했습니다.
OracleClientDriver가 connection.driver_class 속성에 포함되기 전에 System.Data.Oracle을 사용하고 모두 정상적으로 작동하지만, 몇 가지 이유로 ODP를 사용해야하므로이 속성을 NHibernate.Driver.OracleDataClientDriver로 변경했습니다.
내가 세션 공장을 만드는 동안 나는 오류를 다음 얻을 내 코드를 실행하면 :NHibernate와 함께 ODP를 사용할 때의 문제

Unable to cast object of type 'Oracle.DataAccess.Client.OracleConnection' to type 'System.Data.Common.DbConnection' 

Inernet 짧은 검색이 나는 해결책을 발견 한 후 : 추가 :

<property name="hbm2ddl.keywords">none</property> 

을 이제 NHibernate에 성공적으로 구축 세션 공장 만 오류가있는 플러시() 오류 :

System.ArgumentException: Value does not fall within the expected range 
at Oracle.DataAccess.Client.OracleParameter.set_DbType(DbType value) 
at NHibernate.Driver.DriverBase.InitializeParameter(IDbDataParameter dbParam, String name, SqlTypes sqlType) 

아이디어가 있으십니까?
감사합니다. 하지만 다음에 나를 줘

답변

1

나는 그것을 얻는다!

내가 이기면! 그래서 내가 전에 한 일 : Oracle Client bin 디렉토리에서 Oracle.DataAccess.dll을 가져 와서 내 프로젝트 어셈블리에서 참조했습니다. 내가 NHibernate Configure() 함수를 실행할 때 나는 첫 번째 오류를 얻는다. 참조를 제거 할 때 참조 GAC Oracle.DataAccess.dll에 대해 app.config에서 qalifyAssembly 요소를 사용해야한다고 말하는 오류가 발생합니다.

그래서 내가 해결 했어 : 나는 GAC에 가서 이전에 참조한 것과 함께 Oracle.DataAccess dll 버전을 비교했다. 그것은 : 내가 최근에 참조한 버전 : 10.x.x.x 및 GAC에서 dll 버전 (실제로 DataAccess dll 수가 많음)은 2.x.x.x입니다. 여기 : http://tiredblogger.wordpress.com/2008/ ...의 라이브러리/ 나는 나의에 오류가 유사한 발견, 나는 위의 설명처럼의 app.config이 코드를

<runtime> 
     <assemblyBinding xmlns=“urn:schemas-microsoft-com:asm.v1“> 
       <qualifyAssembly partialName=“Oracle.DataAccess“ 
        fullName=“Oracle.DataAccess, 
          Version=2.111.6.20, 
          Culture=neutral, 
          PublicKeyToken=89b483f429c47342“ /> 
     </assemblyBinding> 
</runtime> 

을 추가하고이 DLL을 refernenced. 왜 내가 둘 다 할 필요가 있는지 모르겠지만 단지 그렇게 작동합니다.

관련 문제