已經嘗試了幾種解決方案讓NHibernate刪除孤立記錄。 考慮以下結構:沒有得到NHibernate級聯刪除孤兒使用自動映射
public class Parent {
public virtual ICollection<Domain> Domains {get;set;}
}
public class Domain{
public virtual Parent Parent {get;set;}
}
UPDATE: 它無關,與二傳。這導致了其他問題出現了問題,並得到修復。但是,孤兒的缺失仍然不會發生 我曾嘗試以下:
新增自動映射像域添加屬性(也可在站點類的Parent屬性) :
AutoMap.Override<Parent>(map => { map.HasMany(x => x.Domains).Inverse().Cascade.All(); }) AutoMap.Override<Parent>(map => { map.HasMany(x => x.Domains).Cascade.All(); })
既造成域記錄存儲與PARENT_ID = NULL。
有沒有什麼好的例子來說明如何結合Automapping實現這一點?
我不明白這一點。什麼是Domains.Remove和Domains.Add全部? SetName對我沒有任何意義。對於第一個automapping行:您必須手動設置新創建的域實例中的父屬性,因爲域實例控制關係。之後,域實例應該與父ID保持一致。 – 2012-03-23 09:57:07
這只是模型操作的一個例子。每當Parent.Name更改我需要從集合中刪除1域並添加一個新的。問題不在持久性中,因爲新域名正在被持久化。只是,孤立域記錄不會被刪除,而是將其Parent_Id列設置爲空 – amaters 2012-03-23 10:09:20
您可以發佈模型操作的代碼嗎?如果從Domains集合中刪除域實例並同時操縱/刪除域實例中的父關聯,則可能會發生描述。也許NHibernate很難跟蹤孤立的實例。 – 2012-03-24 10:43:31