2011-07-27 4 views
0

현재 Oracle 및 SQL Server 데이터베이스를 지원하는 응용 프로그램이 있습니다. 우리는 다른 ORM에서 NHibernate로 이동하는 과정에 있습니다. 이처럼 보이는 끝낼 (Oracle 용)NHibernate ID 생성 재 매핑

우리의 ID 매핑 :

<id name="Id" column="FoozId"> 
    <generator class="native"> 
    <param name="sequence">Fooz_SEQ</param> 
    </generator> 
</id> 

이 하나의 데이터베이스 전체 시퀀스를 사용하기 때문에 우리는 단순히 "기본"을 사용할 수 없으며, 우리는 개체 유형 당 하나 필요 .

우리는 here으로 설명한 재 해석기 아이디어를 사용하려고하고 있으며 30자를 초과하는 테이블 이름을 트리밍하는 등의 작업에는 충분할 것으로 보입니다. 그러나 우리는 시퀀스 매개 변수를 전달합니다. 우리는 여전히 SQL Server 용 원시 생성자 클래스를 사용하지만 시퀀스 이름은 생략하려고합니다.

이 작업을 수행 할 수 있습니까? 아니면 두 세트의 매핑을 생성해야합니까?

이것은 우리가 설정 테스트 프로젝트에서 작동하는 것 같다

답변

1

: 그것을 할 수있는 가장 좋은 방법은, 그러나 그것은 오라클과 SQL Server 데이터베이스에 대해 전달 몇 가지 간단한 통합 테스트가없는 경우

if (classMap.Identifier.IsSimpleValue) { 
    var simpleVal = classMap.Identifier as SimpleValue; 
    simpleVal.IdentifierGeneratorProperties.Remove("sequence"); 
} 

확실하지 않음 매핑.