Jam*_*len 7 nhibernate events children event-listener event-handling
我有一个Area对象,它有许多SubArea子元素:
public class Area
{
...
public virtual IList<SubArea> SubAreas { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
他将孩子映射为单向非反向关系:
public class AreaMapping : ClassMap<Area>
{
public AreaMapping()
{
HasMany(x => x. SubAreas).Not.Inverse().Cascade.AllDeleteOrphan();
}
}
Run Code Online (Sandbox Code Playgroud)
区域是我的聚合根.当我保存一个区域(例如Session.Save(区域))时,该区域被保存并且子SubAreas自动级联.
我想添加一个保存或更新事件监听器,以便在持久保存区域和/或子区域时捕获.比方说,我有一个区域,有5个SubAreas.如果我挂钩到SaveEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Run Code Online (Sandbox Code Playgroud)
当我保存区域时,Mylistener 仅针对区域被触发一次(SubAreas被忽略).我希望在事件监听器中捕获5个SubAreas.如果我挂钩到SaveOrUpdateEventListeners:
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Run Code Online (Sandbox Code Playgroud)
当我保存区域时,Mylistener根本没有被解雇.奇怪的是,如果我挂钩到SaveEventListeners 和 SaveOrUpdateEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Run Code Online (Sandbox Code Playgroud)
当我保存区域时,Mylistener被解雇11次:一次为该区域,每次SubArea两次!(我认为因为NHIbernate正在插入SubArea然后使用区域外键更新).
有谁知道我在这里做错了什么,以及如何让听众为每个区域和分区点燃一次?
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |