我有一個區域,對象,它有許多分區孩子:NHibernate的保存/更新事件監聽器:監聽子對象節省
public class Area
{
...
public virtual IList<SubArea> SubAreas { get; set; }
}
他的孩子被映射爲單向非反比關係:
public class AreaMapping : ClassMap<Area>
{
public AreaMapping()
{
HasMany(x => x. SubAreas).Not.Inverse().Cascade.AllDeleteOrphan();
}
}
該區域是我的聚合根。當我保存一個區域(例如Session.Save(區域))時,區域被保存並且子SubAreas自動級聯。
我想添加一個保存或更新事件偵聽器,以便在我的區域和/或子區域被持久時捕獲。比如說我有一個區域,裏面有5個SubAreas。如果我勾入SaveEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
當我保存的區域,myListener的是隻能針對地區發射一次(分區被忽略)。我希望5個SubAreas能夠在事件監聽器中被捕獲。如果我勾入SaveOrUpdateEventListeners代替:
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
當我保存的區域,myListener的是不解僱的。該地區一次,兩次,每次分區:奇怪的是,如果我掛到SaveEventListeners 和 SaveOrUpdateEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
當我保存的區域,myListener的觸發11倍! (我認爲是因爲NHIbernate是INSERT的SubArea,然後用區域外鍵進行UPDATING)。
有沒有人知道我在做什麼錯在這裏,以及如何讓聽衆爲每個區域和分區啓動一次?
你工作了嗎?有同樣的問題 – andy 2011-01-20 00:04:48
我也是!有沒有人找到解決方案? – nozzleman 2016-02-26 09:41:24