我一直在使用生成器类assigned
来分配我的主键值。我读了几篇博客,说明hilo
更好。 assigned
对hilo
有什么好处?
答案 0 :(得分:3)
assigned
非常有用。
如果从某个地方获取值,例如从另一个数据库或导入的文件中获取值,则assigned
可能很有用。但那时它肯定是一个guid,而不是整数。您也可以使用自然主键,它们同时是业务数据和主键。虽然不鼓励这样做。
我想说,assigned
适用于特殊情况,不适用于常规应用程序。通常您使用人工密钥,因此您不关心确切的值。自己生成值可能很困难,至少在您考虑使用同一数据库的多个进程时。
assigned
和(大多数?)其他id生成器之间存在重大差异。 NHibernate和数据库都没有提供assigned
个密钥。 NHibernate通常通过评估id来了解实体是否已经在数据库中。当您自己分配时,您还需要了解自己是否需要插入或更新实体。这使得这个id生成器很特别。当您使用assigned
时,使用任何其他ID生成器时,您的代码会有所不同。