Если вам нужно выполнить более сложные операции с коллекцией, вам, вероятно, понадобится сохранение коллекции, которое вы можете получить с помощью следующего метода расширения (по сути, вам нужно обойти видимость с помощью AbstractCollectionEvent.GetLoadedCollectionPersister
метод):
public static class CollectionEventExtensions
{
private class Helper : AbstractCollectionEvent
{
public Helper(ICollectionPersister collectionPersister, IPersistentCollection collection, IEventSource source, object affectedOwner, object affectedOwnerId)
: base(collectionPersister, collection, source, affectedOwner, affectedOwnerId)
{
}
public static ICollectionPersister GetCollectionPersister(AbstractCollectionEvent collectionEvent)
{
return GetLoadedCollectionPersister(collectionEvent.Collection, collectionEvent.Session);
}
}
public static ICollectionPersister GetCollectionPersister(this AbstractCollectionEvent collectionEvent)
{
return Helper.GetCollectionPersister(collectionEvent);
}
}
Надеюсь, это поможет!
С наилучшими пожеланиями,
Оливер Ханаппи