2012-06-20 4 views
2

NHibernate를 사용 중이고 로컬 SQLExpress 데이터베이스에서 Oracle11g로 전환했습니다.NHibernate의 adonet.batch_size 설정이 무시되는 이유는 무엇입니까? - session.SetBachSize()는 예외를 throw합니까?

내 코드가 불평하기 시작했습니다. 세션 객체 메소드 SetBatchSize()는 System.NotSupported 예외가 발생합니다 :

없음 배치 크기는 세션 팩토리에 대해 정의되지 않았다, 일괄 처리가 불가능합니다. 일괄 처리를 사용하려면 adonet.batch_size = 1로 설정하십시오.

SQLExpress 데이터베이스에서 작동했습니다. 좋아요, 그래서 이걸 덧붙였습니다.

<property name="adonet.batch_size">1</property> 

config로 설정했지만 여전히 동일한 예외가 발생합니다. 세션 고점 속성이

값으로 설정됩니다 : {NHibernate.AdoNet.NonBatchingBatcher}

유형 : NHibernate.Engine.IBatcher {NHibernate.AdoNet.NonBatchingBatcher}

배치 크기를 트랜잭션 내부 또는 외부로 설정하려고해도 아무런 차이가 없습니다.

답변

2

NHibernate는 일부 RDBM의 경우 배터 만 보유합니다. 해당 데이터베이스에 대한 데이터베이스를 찾지 못하면 기본적으로 배치가 불가능한 nonbatchingbatcher가됩니다. 자신의 IBatcher을 구현할 수 있습니다.

+0

그래서 oracle xe는 배터가 없으므로 SetBatchSize() 호출을 시도하거나 잡아야합니다. – mrt181

+1

하나의 전역 batch_size를 지정하거나 SetBatchSize()를 사용하여 재정의해야합니까? – Firo

+0

나는 이것을 해왔다. 그리고 나는 아직도 내가 그것을 사용하고 싶다면 항상 SetBatchSize()를 시도해야한다는 것을 안다. – mrt181

관련 문제