【发布时间】:2012-12-28 15:54:25
【问题描述】:
我有这个仪器实体:
<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 警告 12 NHibernate.Engine.ForeignKeys - 无法 确定仪器是否已分配 标识符 11457 是暂时的或分离的;查询数据库。利用 在会话中显式 Save() 或 Update() 以防止这种情况发生。
关于 Instrument 实体的一些事实:
- 这只是一个参考实体
- 它是不可变的实体
- 无法通过应用程序添加/插入。我从外部提要获取数据库中的行。
问题(版本 1):我的问题是:有没有办法指示 NHibernate 始终将 Instrument 实体视为分离的?我的意思是 - 如果应用程序中存在 Instrument 的实例,则意味着它存在于数据库中。所以查询数据库没有太大意义。
编辑1:因为问题(版本1)还没有回答,让我稍微修改一下:
问题(第 2 版):NHibernate 仍在尝试确定实体是否分离/瞬态的行为可能是什么?我认为我的映射配置正确(unsaved-value、generator)。
【问题讨论】:
标签: nhibernate