2010-05-04 2 views
0

좋아요. 그래서 v5r4를 실행하는 AS400/iSeries가 있습니다. 나는 고전적인 NHibernate를 사용하여 연결하고 몇 가지 기본적인 과정을 수행하는 응용 프로그램을 가지고 있습니다. 이제는 TFS의 선반에서 새 PC로 2 년 동안 앉아있는 앱을 가져 와서 실행할 수없는 것처럼 보입니다. NHibernate 및 iSeries DB2의 문제점

여기 내 최대 절전 모드 구성입니다 :

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="connection.provider"> 
     NHibernate.Connection.DriverConnectionProvider 
     </property> 
     <property name="dialect"> 
     NHibernate.Dialect.DB2400Dialect 
     </property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
     <property name="connection.connection_string"> 
     DataSource=207.206.106.19; 
     Database=AS400; 
     userID=XXXXXX; 
     Password=XXXXXXX; 
     LibraryList=FMSFILTST,BEFFILT,HRDBFT,HRCSTFT,J20##X2DEV,GLCUSTDEV,[email protected]@F3DEV; 
     Naming=System; 
     Initial Catalog=*SYSBAS; 
     </property> 
     <property name="use_outer_join">true</property> 
     <property name="query.substitutions"> 
     true 1, false 0, yes 'Y', no 'N' 
     </property> 
     <property name="show_sql">false</property> 
     <mapping assembly="BusinessLogic" /> 
    </session-factory> 
    </hibernate-configuration> 

내가 가진 모든 적절한 DLL의가 (NHibernate에, 성, iesi, antlr3, LOG4 등) 포함되어 있습니다. 또한 나는 여전히 최대한 빨리 전화로 다음과 같은 오류를 얻고있다

<runtime> 
    <assemblyBinding> 
     <qualifyAssembly partialName="IBM.Data.DB2.iSeries" fullName="IBM.Data.DB2.iSeries,Version=10.0.0.0,PublicKeyToken=9CDB2EBFB1F93A26,Culture=neutral"/> 
    </assemblyBinding> 
    </runtime> 

그러나 내 Web.config의이 라인을 가지고

NHibernate.Cfg.Configuration().Configure().BuildSessionFactory().OpenSession(); 

캐스팅 할 수

이 없습니다 다음과 같은 오류가있다 유형이 인 'IBM.Data.DB2.iSeries.iDB2Connection' 의 유형의 오브젝트 'System.Data.Common.DbCommand'를 입력하십시오.

나는 이것에 대해 도움을 받기를 갈망하고 있습니다. 모든 도움을 주시면 감사하겠습니다. 감사!

+0

1. 어떤 버전의 NHibernate를 사용하고 있습니까? 2. iDB2Connection 유형을 열고 실제로 DbCommand를 상속받지 않았는지 확인할 수 있습니까? –

답변

3

추가하려고합니다. IBM.Data.DB2.iSeries.dll은 v6r1 이전의 .NET 1.0/1에 대해 컴파일됩니다. 이 때문에 IDBConnection에 IDB2Connection을 캐스팅 할 수 없습니다. 리플렉터를 사용하고 IBM dll을 살펴 본다면 참조 아래를보고 System.Data 버전을 살펴보십시오. 그런 다음 프로젝트에서 참조하는 System.Data의 버전을 살펴보면 2.0.5 ****에 있다고 추측합니다. v6r1 이상으로 업그레이드하면 캐스팅 할 수 있습니다.

편집 : 이것을 발견하기위한 경로를 이끌어내는 Steve Bohlen 크레딧을주고 싶었습니다.

+0

죄송합니다. 나는 이것이 대답이라고 생각한다. 우리는 V5r4와 6r1 로의 업그레이드에 문제가 있었지만, 카드에서는 오랜 시간 동안 발생하지 않았습니다. 우리의 iSeries는 7 terbyte의 데이터베이스와 수천 개의 rpg 오브젝트로 회사 전체를 운영하므로 가볍게 업그레이드하지 않습니다. 이것에 대한 답변을 주셔서 감사합니다. – chrisjlong

+0

걱정할 필요가 없습니다. 기꺼이 도와 드리겠습니다. 이 주제에 대한 정보가 거의없는 것이 놀랍습니다. –

+0

당신은 내가 v5r4 상자에 충돌 할 수있는 v6r1 버전의 드라이버를 얻었습니까? 또는 내가 어딘가에 두건의 밑에 저것은 그것에 얻는가? (즉, 운전자가 어떤 버전을 사용할 지 결정 함) – chrisjlong

0

는 iSeries 시스템 액세스의 V5R4를 사용할 때이 문제가 있었다

<property name="connection.driver_class"> 
NHibernate.Driver.DB2400Driver 
</property> 
0

로컬을 복사하도록 IBM.Data.DB2.dll에 대한 참조를 변경하여이 문제를 해결했습니다.