在NHibernate ID Generator部分的映射文件中,赋值和选择的含义是什么?

时间:2011-06-01 13:22:10

标签: c# nhibernate orm id-generation

在映射文件的NHibernate ID Generator部分中,已分配和选择的含义是什么?

2 个答案:

答案 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。