2009-10-21 2 views
0

필자가 작성한 앱에 "이상한"시나리오가 있는데,이를 nHibernate를 사용하여 구현할 수 있습니다.nHibernate를 사용하여 자식 개체를로드하기위한 특별한 시나리오

시나리오는 다음과 같이 진행됩니다 ... 테스트가 있습니다. 테스트는 일련의 Testlets로 구성됩니다 (Testlet은 미리 정의 된 일련의 질문이며 메타 데이터가 포함되어 있습니다 ...).

... 내가 테스트를 실행하는 동안 테스트의 특성에 따라 데이터베이스에서 무작위로 선택되는 테스트 렛 (레벨 및 유형은 ...).

내 DB에있는 Testlet 테이블에는 Test 테이블에 FK가 있어서는 안됩니다. 저장 프로 시저를 가리키는 사용자 지정이 작업을 수행 할 것이라고 생각했지만 - 매핑 hbms 스키마를 빈 DB로 내보낼 때 여전히 내 Testlet 테이블에 외래 키를 만듭니다.

다음은 테스트 내 매핑입니다 : 그 자동 생성 외래 키 주위에 얻을 수있는 방법이

<class name="Test"> 
    <id name="UID"> 
     <generator class="guid" /> 
    </id> 
    <property name="Type" /> 
    <property name="Description" /> 

    <bag name="Items" generic="true" inverse="false"> 
     <key column="UID"/> 
     <one-to-many class="Testlet"/> 
     <loader query-ref="loadTestletByTestID"/> 
    </bag> 
    </class> 

<sql-query name="loadTestletByTestID"> 
    <load-collection alias="items" role ="Test.Items"/> 
    exec [TestletByTestID] ? 
    </sql-query> 

있습니까?

고마워, 왜 그냥 매핑에서 항목을 제거하고 임의 항목을로드하고 테스트를로드 한 후에 할당 할 수있는 쿼리를 호출하지 천사

답변

0

? 그렇다면 저장 프로 시저가 필요하지 않습니다.

테스트를로드 한 후 코드없이 자동으로로드하는 것이 중요한 경우이 코드를 NHibernate even에 넣을 수 있습니다. 그런 다음 테스트가로드 될 때마다 실행됩니다. 그러나 실제로, 나는 그 노력이 그만한 가치가 있는지 의심 스럽다.

관련 문제