Я использовал генератор класса assigned
, чтобы назначить значения моего первичного ключа. Я прочитал несколько блогов, в которых говорится, что hilo
лучше. Есть ли польза от assigned
по сравнению с hilo
?классы генераторов NHibernate
ответ
assigned
полезен, если вы хотите определить первичный ключ самостоятельно.
Если вы получаете значение откуда-то, например, из другой базы данных или импортированного файла, может оказаться полезным assigned
. Но тогда это, безусловно, ориентир, а не целое число. Вы также можете использовать естественные первичные ключи, которые одновременно являются бизнес-данными и первичным ключом. Хотя это не рекомендуется.
Я бы сказал, assigned
предназначен для особых случаев, а не для обычных применений. Обычно вы используете искусственные ключи, поэтому вам не важно точное значение. Создание значения самостоятельно может быть затруднено, по крайней мере, когда вы рассматриваете несколько процессов, использующих одну и ту же базу данных.
Существует большое различие между assigned
и (большинством?) Другими генераторами id. assigned
ключи не предоставляются NHibernate или базой данных. NHibernate обычно знает, если объект уже находится в базе данных, оценивая идентификатор. Когда вы назначаете его самостоятельно, вам также необходимо знать себя, нужно ли вставлять или обновлять объект. Это делает этот генератор id особенным. Ваш код будет выглядеть иначе, если вы используете assigned
, как при использовании любого другого генератора идентификаторов.
, так что я могу изменить файлы hbm.xml для использования генератора 'hilo' и удалить экземпляры установки первичного ключа в моих сущностях? – 2010-08-09 20:29:24
Да, когда вы используете 'hilo' (или любой другой генератор, кроме' назначенного'), вам не нужно генерировать первичный ключ самостоятельно. Первичный ключ устанавливается в момент, когда объект помещается в сеанс (например, при вызове Update, Merge, SaveOrUpdate). Хило (в большинстве случаев) не нуждается в обращении к базе данных для генерации идентификатора. (Если вы сами установили hilo-generated id, вы испытаете странное поведение ...) –
- 1. Статические переменные simultaion: классы против генераторов
- 2. Синтетические классы в NHibernate
- 3. Связанные классы в NHibernate
- 4. NHibernate 4.0 разбивает производные классы
- 5. Абстрактные классы и Свободный Nhibernate
- 6. Классы NHibernate как Контракты данных
- 7. Понимание генераторов POCO
- 8. Поведение сброса для генераторов генераторов случайных чисел
- 9. Какие классы следует сопоставлять с NHibernate?
- 10. nHibernate - создать классы из базы данных?
- 11. NHibernate, Автоотображение и Цепной Абстрактные классы
- 12. Fluent NHibernate классы «HasMany» в Configuration.ClassMappings
- 13. Несколько генераторов
- 14. генераторов поддержки
- 15. Генератор обложек генераторов C#
- 16. Проблема с генераторами генераторов
- 17. реализация генераторов python с закрытием
- 18. Массив из разных генераторов
- 19. Типичные псевдонимы для генераторов Java
- 20. Как настроить путь назначения для пользовательских генераторов генераторов?
- 21. Генератор генераторов Qmake
- 22. Несогласованное поведение генераторов питона
- 23. Понимание генераторов в Python
- 24. shell scripting Несколько генераторов
- 25. Использование генераторов FSCheck
- 26. CURAND свойства генераторов
- 27. Преимущества генераторов TypeScript
- 28. Регистрация генераторов с Autofac
- 29. Разделение генераторов PHP
- 30. Итераторы Python3 против генераторов
Что лучше зависит от того, как вы используете назначенное. Что вы назначаете? – Paco
@Paco: Первичные ключи. – 2010-08-09 20:48:53