在NHibernate
映射文件的 ID Generator 部分,assigned 和 select 是什么意思?
2 回答
assigned
意味着您在将实体保存在会话中之前在代码中分配主键。
select
表示它是由数据库分配的,它是通过查询某个唯一键从数据库中获取的。
有身份/序列和分配。来自 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 是否应该保存或更新对象。