我有这个仪器实体:
<class name="Instrument" table="Instruments" mutable="false">
<id name="ID" column="INSTRUMENT_ID" unsaved-value="0">
<generator class="assigned" />
</id>
<property name="....." />
<property name="....." />
</class>
该实体用于其他实体( InstrumentSelection)中的多对一关系。这是多对一的映射信息:
<many-to-one name="Instrument" access="field.camelcase" column="Instrument_ID" update="false" class="Instrument" not-null="true" fetch="join" lazy="false" />
当我使用Save保存InstrumentSelection实体时,我遇到的问题是:
Transact(() => session.Save(entity));
我在日志中收到错误:
2012-12-20 14:09:54,607 WARN 12 NHibernate.Engine.ForeignKeys - 无法确定分配标识符为 11457 的仪器是暂时的还是分离的;查询数据库。在会话中使用显式 Save() 或 Update() 来防止这种情况。
关于 Instrument 实体的一些事实:
- 它只是一个参考实体
- 它是不可变的实体
- 它不能通过应用程序添加/插入。我从外部提要获取数据库中的行。
问题(版本 1):我的问题是:有没有办法指示 NHibernate 始终将 Instrument 实体视为分离的?我的意思是-如果应用程序中存在 Instrument 的实例,则意味着它存在于数据库中。所以查询数据库没有太大意义。
编辑 1:因为问题(版本 1)还没有回答,让我稍微改变一下:
问题(第 2 版):NHibernate 仍在尝试确定实体是否分离/瞬态的行为可能是什么?我想我的映射配置正确(unsaved-value,generator)。