2012-04-12 2 views
0

У меня есть несколько таблиц в моей БД, называетсяСинтетические классы в NHibernate

UserMatchCriteria 
UserMatchLifestyle 
UserHobby 

Теперь первые два имеют запись однолинейной каждый идентификатор пользователя, но третья таблица может содержать от 0 до 100 записей в зависимости от хобби, который выбрал пользователь.

Я хочу иметь в коде C# объект, называемый как UserSearchDetails, который содержит один объект UserMatchCriteria, один объект UserMatchLifestyle и коллекцию IList, которая содержит ноль или более объектов UserHobby.

Моя проблема в том, что я не хочу привязывать таблицу пользователя к привязке к ней при каждой загрузке, так как это большие накладные расходы, которые мне почти не нужны во всех случаях использования, которые у меня есть для пользовательского объекта. Я хочу, чтобы данные поиска загружались отдельно в объекте UserSearchDetails, который не имеет связанной с ним таблицы DB. Очевидно, что я могу использовать NHibernate, чтобы делать вещи, такие как

<one-to-one name=UserMatchCriteria> 
<one-to-one name=UserMatchLifestyle> 
<bag name=Hobbies........... /> 

и т.д., но без базовой таблицы для запуска первоначальный выбор выключен, и предоставить мне UserId, я не уверен, в каком контексте использовать эти записи.

Нужно ли создать другую таблицу с именем UserSearchDetails только с одной записью для UserId in, чтобы использовать ее в качестве базовой таблицы, которая затем соединяется с другими таблицами через PK UserId?

Или есть другой способ достичь того, что я пытаюсь сделать здесь?

ответ

1

ссылки и сумка лениво загружены по умолчанию. вы можете сопоставить компонент в пользователе

<component name="UserSearchDetails"> 
    <many-to-one> 
    <many-to-one> 
    <bag> 
<component>