2013-02-17 4 views
0

Я использую NHibernate 3.3.2 (в первый раз), и я пытаюсь создать следующую таблицу, так что идентификатор является уникальным идентификатором таблицы/сущности, и последовательность является уникальной идентификацией за группа, в таблице примеров клубы 123, 232 и 444 являются группами.Для групповых идентификаторов с NHibernate

ID Club Sequence 
1 123 1 
2 123 2 
3 232 1 
4 232 2 
5 444 1 
6 123 3 

Я хочу, чтобы вставки были как раз с клубной категорией, обе идентичности будут автоматическими.

Можно ли это сделать? И если да, то как я могу это сделать?

+0

Нет упоминания о планируемом объекте. Как вы планируете обучать РСУБД для генерации порядковых номеров? –

+0

проектирование предполагаемого объекта будет иметь одинаковые регулярные свойства плюс свойство Sequence, которое будет int. вторая часть вашего комментария - это именно мой вопрос. – Mithir

+0

Тогда вы должны добавить теги для sql и вашей РСУБД. Я думал, вы спрашиваете, как заставить NHibernate не мешать числам, генерируемым БД. –

ответ

1

Если вопрос что-то вроде:

Что такое самый хороший способ генерации значений в столбце последовательности в соответствии с этим рисунком?

Тогда вот несколько советов:

  • Чтобы иметь DB генерировать столбец последовательности, я думаю, вы должны смотреть на спусковом основе решения. «Группы», о которых вы говорите, ничего не значат для БД, если вы не создали какой-то (SQL-) код для его обработки. Возможно, вы захотите создать хранимую процедуру, которая генерирует число, а затем триггер INSERT.

  • В NHibernate можно игнорировать столбец INSERT и просто считывать значение, сгенерированное БД. См. Generated Properties в ссылке NHibernate.

  • Структура, которую вы описываете, аналогична структуре отображения списка в NHibernate, если вы отбросите столбец идентификатора. Коллекция всегда принадлежит чему-то, поэтому это может быть решением, если у вас есть коллекция, принадлежащая клубу. Затем в колонке «Клуб» указывается владелец коллекции, а «Последовательность» будет индексом в списке. (Я предполагаю, что таблица должна содержать несколько столбцов, которые затем будут элементы в списке.)

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

+0

спасибо, это отличный ответ! – Mithir

0

Его можно указать формулу в вашем сопоставлении свойств, которая генерирует максимальную последовательность, если выполняется вставка. Или вы можете изменить свой объект для создания порядкового номера, если он не существует.

+0

можете ли вы указать формулу? Пример или ссылку, чтобы найти что-то подобное? – Mithir

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