NHibernate сумка карта дополнительной колонки - PullRequest
0 голосов
/ 11 мая 2011

У меня есть отображение NHibernate для класса MediaStyle, который включает это отображение:

<bag name="EngineSteps" table="core.MediaStyleMediaPrintEngineStepAssoc" order-by="Sequence" lazy="true" cascade="none">
  <key column="MediaStyleId"/>
  <many-to-many class="MediaPrintEngineStep" lazy="proxy" />
</bag>

Класс MediaPrintEngineStep также отображается, и класс содержит свойство 'Sequence'. Последовательность не хранится в таблице, в которую MediaPrintEngineStep отображается, но содержится в таблице сопоставлений, используемой для сопоставления EngineSteps и MediaStyles.

Есть ли способ, чтобы nHibernate отобразил столбец 'Sequence' из core.MediaStyleMediaPrintEngineStepAssoc в пустое свойство класса MediaPrintEngineStep, или мне нужно будет написать дополнительный код для получения / установки последовательности после ее сопоставления? К сожалению, в настоящее время рефакторинг структуры хранилища не вариант.

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

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

Я обнаружил, что было проще сбросить последовательность вручную, когда я извлек список, так как поиск отсортировал их по последовательности.

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

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

0 голосов
/ 11 мая 2011

Я думаю, что вы ответите в этом сообщении , или посмотрите эту превосходную статью на сайте nhibernate.info.

* Edit Вы спрашиваете, как вы добавляете свойства в таблицу «junction», которая была определена как отношение «многие ко многим» и, возможно, не хотите менять отображение на два «многие к одному». Поэтому, не отдавая много магии, я бы либо: а) посмотрел на дублирующий вопрос о S.O (моя первая ссылка), либо б) использовал LINQ-to-objects (нажмите мою вторую ссылку) ....

Извините, но я не верю, что вам нужна дополнительная помощь.

...