生成器类NHibernate

时间:2010-08-09 19:20:25

标签: nhibernate hilo

我一直在使用生成器类assigned来分配我的主键值。我读了几篇博客,说明hilo更好。 assignedhilo有什么好处?

1 个答案:

答案 0 :(得分:3)

当你想自己定义主键时,

assigned非常有用。

如果从某个地方获取值,例如从另一个数据库或导入的文件中获取值,则assigned可能很有用。但那时它肯定是一个guid,而不是整数。您也可以使用自然主键,它们同时是业务数据和主键。虽然不鼓励这样做。

我想说,assigned适用于特殊情况,不适用于常规应用程序。通常您使用人工密钥,因此您不关心确切的值。自己生成值可能很困难,至少在您考虑使用同一数据库的多个进程时。

assigned和(大多数?)其他id生成器之间存在重大差异。 NHibernate和数据库都没有提供assigned个密钥。 NHibernate通常通过评估id来了解实体是否已经在数据库中。当您自己分配时,您还需要了解自己是否需要插入或更新实体。这使得这个id生成器很特别。当您使用assigned时,使用任何其他ID生成器时,您的代码会有所不同。