2009-10-21 7 views
0

У меня сценарий «странный» в приложении, которое я пишу, и пытаюсь понять, что я могу реализовать с помощью nHibernate.Сценарий для загрузки дочерних объектов с использованием nHibernate

Сценарий выглядит следующим образом ... есть тест. Тест состоит из серии пробников (тестовая программа представляет собой набор заданных вопросов с метаданными ...).

Вещь ... пока я запускаю тест, тестовые программы, которые его формируют, выбираются случайным образом из базы данных в соответствии с характеристиками теста (это уровень и тип, который является ...).

Что все это подразумевает, так это то, что в таблице Testlet моей БД не должно быть FK для таблицы Test. Я думал, что обычай в том, что я укажу на сохраненный proc, выполнит эту задачу, однако, когда я экспортирую схему отображения hbms в пустой БД, он все равно создает внешние ключи в моей таблице 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> 

Есть ли способ обойти это авто созданных внешнего ключа?

Большого спасибо, Angel

ответ

0

Почему бы не просто удалить элементы из отображения, и вызовите запрос для загрузки случайных элементов и назначить их после загрузки теста? Тогда вам даже не понадобится хранимая процедура.

Если действительно важно загрузить его автоматически, без кода после загрузки теста, вы можете поместить этот код в NHibernate. Затем он выполняется при каждом загрузке теста. Но на самом деле я сомневаюсь, что это стоит усилий.

Смежные вопросы