У меня есть объект Area, который имеет много ПОДРАЙОНЕ детей: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 ВСТАВЛЯЕТ СУББОТУ, а затем UPDATING с внешним ключом области).
Кто-нибудь знает, что я делаю неправильно здесь, и как я могу заставить слушателя стрелять один раз для каждой области и подрайона?
Вы справились с этим? с тем же вопросом – andy
Я тоже! Кто-нибудь нашел решение? – nozzleman