4

NHibernate映射文件的 ID Generator 部分,assigned 和 select 是什么意思?

4

2 回答 2

7

assigned意味着您在将实体保存在会话中之前在代码中分配主键。

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

于 2011-06-01T13:28:49.163 回答
4

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

5.1.5.1。发电机

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

uid_sequence 跨平台开发,原生策略会选择identity、sequence和hilo策略,依赖于底层数据库的能力。

5.1.5.7。分配的标识符

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

由于其固有的性质,使用此生成器的实体无法通过 ISession 的 SaveOrUpdate() 方法保存。相反,您必须通过调用 ISession 的 Save() 或 Update() 方法来显式指定 NHibernate 是否应该保存或更新对象。

于 2011-06-01T19:29:30.640 回答