0
我的豆節省的hasMany關係看上去違犯非空約束是這樣的:NHibernate的:當級聯= AllDeleteOrphan
public class A {
...
[HasMany (MapType = typeof(B), Table = "B_table", ColumnKey = "A_object_id",
Fetch = FetchEnum.Join,
RelationType = RelationType.List, Index = "id",
Cascade = ManyRelationCascadeEnum.AllDeleteOrphan)]
IList<B> BList { get; set; }
...
}
,並在此豆進行保存時,我想到的是B型的豆子會自動 保存(並在更新時刪除)。 NHibernate肯定會嘗試這樣做,但它確實如此,但是它首先將B_table.A_object_id設置爲NULL,然後NHibernate更新B_table來設置正確的B_table.A_object_id值(即:A.ID)。
這不是我想要的,因爲我在數據庫中有一個NOT NULL約束。
我的問題是:如何讓NHibernate自動保存具有從一開始就設置的正確ID的子對象?我知道我可以創建一個bean,保存它,獲取它的全新ID,創建B beans,設置它們的A_object_id,然後保存B beans ......但這是一個解決方法。
其實,我不能這樣做 B類不能引用A,因爲映射不是那麼簡單 它的B_table.A_object_id中的B類也可能引用表A2_table中的對象,也就是說,我有一個合適的CHECK條件來驗證這樣一個關係,從B類的角度來看,我不需要知道它屬於哪裏 – wysek 2010-03-11 09:07:48
然後我知道的唯一的其他選項是經過相當多的研究)將被刪除空限制。 – 2010-03-16 18:09:36
你解決了你的問題嗎?我已經與類似於:( – frabiacca 2010-09-21 16:10:12