NHibernate.Engine.ForeignKeys-无法确定实体是暂时的还是分离的

NHibernate.Engine.ForeignKeys-无法确定实体是暂时的还是分离的,nhibernate,Nhibernate,我有这个工具实体: <class name="Instrument" table="Instruments" mutable="false"> <id name="ID" column="INSTRUMENT_ID" unsaved-value="0"> <generator class="assigned" /> </id> <property name="....." /> <p

我有这个工具实体:

<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>
我在日志中发现错误:

2012-12-20 14:09:54607警告12 NHibernate.Engine.ForeignKeys-无法 确定仪器是否具有指定的 标识符11457是瞬时的或分离的;查询数据库。使用 在会话中显式保存()或更新(),以防止出现这种情况

关于仪器实体的一些事实:

  • 它只是一个参考实体
  • 它是不可变的实体
  • 无法通过应用程序添加/插入。我从外部提要获取数据库中的行

<强>问题(版本1)< /强>:我的问题是:有没有办法指示NHiBiNATE总是认为仪器实体是独立的?我的意思是-如果应用程序中存在一个仪器实例,则意味着它存在于数据库中。因此,查询数据库没有太多意义

编辑1:因为问题(第1版)尚未回答,让我稍微修改一下:
问题(第2版):NHibernate仍在试图确定实体是否分离/暂时的行为可能是什么?我想我的映射配置正确(未保存的值生成器)。

问题是,在保存仪器选择时,NHibernate正在级联操作以保存子仪器。我的第一个建议是在关系的选择端将cascade设置为none


我的第二个建议是使用拦截器,如中所示。

我已经用拦截器创建了一个解决方案(完全相同的解决方案)-效果很好。我也尝试过级联选项,但没有成功。我仍然面临着这个问题。不管怎样,也许我会重新表述我的问题。请参阅更新的问题。
<many-to-one name="Instrument" access="field.camelcase" column="Instrument_ID" update="false" class="Instrument" not-null="true" fetch="join" lazy="false" />
Transact(() => session.Save(entity));