在映射文件的NHibernate
ID Generator部分中,已分配和选择的含义是什么?
答案 0 :(得分:6)
assigned
表示您在会话中保存实体之前在代码中分配主键。
select
表示它是由数据库分配的,它是通过查询某个唯一键从数据库中获取的。
答案 1 :(得分:4)
有身份/序列并已分配。来自NH documentation:
<强> 5.1.5.1。发电机强>
对于支持身份的数据库 列(DB2,MySQL,Sybase,MS SQL), 您可以使用身份密钥生成。 对于支持序列的数据库 (DB2,Oracle,PostgreSQL,Interbase, McKoi,SAP DB)您可以使用序列 风格密钥生成。这两个 策略需要两个SQL查询 插入一个新对象。
uid_sequence 对于跨平台开发, 本土策略将从中选择 身份,序列和希洛 策略,取决于 底层的能力 数据库中。
<强> 5.1.5.7。已分配的标识符
如果您想要分配应用程序 标识符(与拥有标识符相对) NHibernate生成它们,你可以使用 指定的发电机。这个特别的 生成器将使用标识符 已分配给对象的值 标识符属性。要非常小心 使用此功能分配键时 具有商业意义(几乎总是一个 可怕的设计决定。)
由于其固有的性质,实体 使用这个发电机不能 通过ISession保存 SaveOrUpdate()方法。相反,你 必须明确指定 如果对象应该是NHibernate 通过调用或保存或更新 Save()或Update()方法 的ISession。