2011-06-01 44 views

回答

4

有身份/序列和分配。来自NH documentation

5.1.5.1。生成器

对于支持标识 列(DB2,MySQL,Sybase,MS SQL), 的数据库,您可以使用标识密钥生成。 对于支持序列 (DB2,Oracle,PostgreSQL,Interbase, McKoi,SAP DB)的数据库,可以使用序列 样式密钥生成。这两个这些 策略都需要两个SQL查询来插入一个新对象 。

uid_sequence 对于跨平台开发, native策略会从 选择标识,序列和希洛 策略,取决于 能力的根本 数据库。

5.1.5.7。分配的标识

如果您希望应用程序分配 标识符(而不是让 NHibernate的生成它们),你可以使用 指定的发电机。这个特殊的 生成器将使用已分配给对象的 标识符属性的标识符 值。在使用此功能时,请务必小心 以指定具有商业含义的键 (几乎总是一个 糟糕的设计决策)。

由于其固有特性,使用此生成器的实体 不能通过ISession的 SaveOrUpdate()方法保存为 。相反,如果通过调用 的 Save()或Update()方法保存或更新了对象 ISession,则 必须明确指定为 NHibernate。

5

assigned表示在将实体保存在会话中之前,您在代码中分配主键。

select表示它是由数据库分配的,它是通过查询某个唯一键从数据库中获得的。