Nhibernate NH ManyToOne“;对象是一个未保存的临时实例;

Nhibernate NH ManyToOne“;对象是一个未保存的临时实例;,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,EntityA使用property ref属性和cascade=“none”与EntityB具有manytone关系 在NH 2.1中,我能够使用以下代码: EnttiyA a = new EntityA(); a.EntityB = new EntityB(); a.EntityB.PropertyRef = 13; session.Save(a); 它就像一种魅力。 现在,升级到NH 3.2后,同样的代码让我非常熟悉: object is an unsaved transient inst

EntityA
使用
property ref
属性和
cascade=“none”
EntityB
具有
manytone
关系

在NH 2.1中,我能够使用以下代码:

EnttiyA a = new EntityA();
a.EntityB = new EntityB();
a.EntityB.PropertyRef = 13;
session.Save(a);
它就像一种魅力。
现在,升级到NH 3.2后,同样的代码让我非常熟悉:

object is an unsaved transient instance - 
save the transient instance before merging: 
我做错了什么?2.1和3.2之间的
ManyToOne
关系是否有突破性的变化

[更新]:

为了让问题更清楚-我不想创建一个新的EntityB,我希望我的新EntityA引用一个PropertyRef值为13的现有EntityB


谢谢

好吧,它不应该在2.1中工作。您已经明确关闭了级联,因此保存
a
不会触发保存
a.EntityB
并且
a
无法持久化。在保存
a
之前调用
session.Save(a.EntityB)
,或者将级联值更改为至少
Save

只要在刷新之前都保存了,保存的顺序就不重要。不,我不想保存新的EntityB,我只想将a的PropertyRef设置为13,但您正在显式地创建新的
EntityB
。如果要使用现有的会话,请使用
session.Load(13)
加载它。使用property ref定义关系的事实不会改变设置对象的方式。