Ho un oggetto Area che ha molti figli sottozona:NHibernate salvare/ascoltatori di eventi di aggiornamento: l'ascolto per i bambini oggetto di risparmiare
public class Area
{
...
public virtual IList<SubArea> SubAreas { get; set; }
}
che i bambini sono mappate come un rapporto unidirezionale non inversa:
public class AreaMapping : ClassMap<Area>
{
public AreaMapping()
{
HasMany(x => x. SubAreas).Not.Inverse().Cascade.AllDeleteOrphan();
}
}
L'area è la mia radice aggregata. Quando salvi un'area (ad esempio Session.Save (area)), l'area viene salvata e il figlio SubAreas viene automaticamente messo in cascata.
Desidero aggiungere un listener di eventi di salvataggio o aggiornamento da catturare ogni volta che le aree secondarie e/o sono persistenti. Ad esempio, ho un'area, che ha 5 SubAreas. Se mi collego in SaveEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Quando ho salvare l'area, myListener viene sparato solo una volta solo per le aree limitrofe (sottozone vengono ignorati). Voglio che il 5 SubAreas venga catturato anche nell'ascoltatore dell'evento. Se mi collego in SaveOrUpdateEventListeners invece:
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Quando ho salvare l'area, myListener è non licenziato a tutti. Stranamente, se collego in SaveEventListeners e SaveOrUpdateEventListeners:
Configuration.EventListeners.SaveEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Configuration.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] { mylistener };
Quando ho salvare l'area, myListener è sparato 11 volte: una volta per la zona, e due volte per ogni sottozona! (Penso che NHIbernate stia INSERISCI la SubArea e poi AGGIORNA con la chiave esterna dell'area).
Qualcuno sa cosa sto facendo male qui, e come posso far sì che l'ascoltatore spari una volta per ogni area e sottoarea?
hai lavorato a questo? avendo lo stesso problema – andy
Anch'io! Qualcuno ha trovato una soluzione? – nozzleman