有关于它的明确文档部分。我建议使用 HI-LO(参见Hi/Lo 算法是什么? https://stackoverflow.com/q/282099/1679310)
5.1.5.1.发电机 http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-id-generator
增量
生成任何整数类型的标识符,仅当没有其他进程将数据插入同一表时,该标识符才是唯一的。不要在集群中使用。
identity
支持 DB2、MySQL、MS SQL Server 和 Sybase 中的标识列。使用 Convert.ChangeType 将数据库返回的标识符转换为属性类型。因此支持任何完整的属性类型。
sequence
使用 DB2、PostgreSQL、Oracle 中的序列或 Firebird 中的生成器。使用 Convert.ChangeType 将数据库返回的标识符转换为属性类型。因此支持任何完整的属性类型。
hilo
使用 hi/lo 算法有效地生成任何整数类型的标识符,给定表和列(默认情况下分别为 hibernate_unique_key 和 next_hi)作为 hi 值的来源。 hi/lo 算法生成仅对于特定数据库唯一的标识符。请勿将此发生器与用户提供的连接一起使用。
您可以使用“where”参数来指定要在表中使用的行。如果您想使用单个表作为标识符,并且每个表具有不同的行,这非常有用。
seqhilo
在给定命名数据库序列的情况下,使用 hi/lo 算法有效地生成任何整数类型的标识符。
uuid.hex
使用 System.Guid 及其 ToString(string format) 方法生成字符串类型的标识符。返回的字符串长度取决于配置的格式。
uuid.字符串
使用新的 System.Guid 创建转换为字符串的 byte[]。
指导
使用新的 System.Guid 作为标识符。
guid.comb
使用 Jimmy Nilsson 在文章中描述的算法生成新的 System.Guidhttp://www.informit.com/articles/article.asp?p=25862 http://www.informit.com/articles/article.asp?p=25862.
native
根据底层数据库的功能选择身份、序列或 hilo。
assigned
让应用程序在调用 Save() 之前为对象分配一个标识符。
foreign
使用另一个关联对象的标识符。通常与<one-to-one>
主键关联。