assigned
просто полезно, когда вы хотите определить первичный ключ самостоятельно.
Если вы получаете значение откуда-то, например, из другой базы данных или импортированного файла, assigned
может быть полезным.Но тогда это, безусловно, указатель, а не целое число.Вы также можете использовать естественные первичные ключи, которые являются бизнес-данными и первичным ключом одновременно.Хотя делать это не рекомендуется.
Я бы сказал, assigned
для особых случаев, а не для обычных приложений.Обычно вы используете искусственные ключи, поэтому вам не важно точное значение.Сгенерировать значение самостоятельно может быть сложно, по крайней мере, когда вы рассматриваете несколько процессов, использующих одну и ту же базу данных.
Существует большая разница между assigned
и (большинством?) Другими генераторами идентификаторов.assigned
ключи не передаются ни NHibernate, ни базой данных.NHibernate обычно знает, находится ли объект в базе данных, оценивая идентификатор.Когда вы назначаете его самостоятельно, вам также необходимо знать, нужно ли вставлять или обновлять сущность.Это делает этот генератор идентификаторов особенным.Ваш код будет выглядеть иначе, когда вы используете assigned
, как и при использовании любого другого генератора идентификаторов.