2011-11-29 85 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

相關問題