0
我有以下實體:NHibernate的通過碼 - 保存未保存(瞬態)的子實體實體
public class Item
{
public virtual long ID { get; set; }
public virtual Version Version { get; set;}
More properties...
}
在實體映射我有:
ManyToOne(p => p.Version, m =>
{
m.Column("VERSION_ID");
}
實體Version
也被映射代碼,它的ID是一個自動生成的序列。 當我保存Item
時,我創建了一個新的Version
,將其分配給Version
屬性並保存。我只想在Item
成功保存後才保存Version
實體。現在,當我這樣做時,它會拋出一個TransientObjectException
。有沒有可能解決這個問題?
所以級聯意味着子實體會與父級一起保存,並且會在出現錯誤時回滾? – user6251216
Cascade.Persit將在保存父項時(明確地或當會話刷新時)保存所引用的實體。您有責任在交易中執行此操作,以便在發生問題時可以回滾。我已經用一個片段更新了答案,顯示瞭如何完成。 –
該實體與運行代碼分開保存,因此難以訪問該事務。我想我必須處理Cascade.All這個工作。 – user6251216