2011-11-29 36 views
1

EntityAEntityBManyToOne关系,使用property-ref属性和cascade="none"NH ManyToOne“对象是未保存的瞬态实例”

在NH 2.1,我可以使用下面的代码:

EnttiyA a = new EntityA(); 
a.EntityB = new EntityB(); 
a.EntityB.PropertyRef = 13; 
session.Save(a); 

和它的工作就像一个魅力。
现在,经过我升级到3.2 NH,同样的代码给我的一切太熟悉了:

object is an unsaved transient instance - 
save the transient instance before merging: 

我在做什么错? 2.1和3.2之间的关系是否有任何突破性变化?

[更新]:

只是为了使问题更加清晰 - 我要创造一个新的EntityB,我想我的新EntityA有一个PropertyRef值参考现有EntityB的13.

谢谢!

回答

2

那么,它不应该在2.1中工作。您已明确禁用级联,因此保存a不会触发保存a.EntityBa无法保留。要么在保存a之前致电session.Save(a.EntityB),要么将级联值更改为至少save

+0

只要保存之前保存的顺序都不重要, –

+0

不,我不想保存一个新的EntityB,我只想将a的PropertyRef设置为13 – sternr

+0

但是您明确创建_new_'EntityB'。如果你想使用现有的,使用'session.Load (13)'加载它。使用property-ref定义关系的事实不会改变您设置对象的方式。 – NOtherDev

相关问题