/// <summary> /// Iterate just the elements of the collection that are already there. Don't load /// any new elements from the database. /// </summary> public static IEnumerable GetLoadedElementsIterator(ISessionImplementor session, CollectionType collectionType, object collection) { if (CollectionIsInitialized(collection)) { // handles arrays and newly instantiated collections return(collectionType.GetElementsIterator(collection, session)); } else { // does not handle arrays (that's ok, cos they can't be lazy) // or newly instantiated collections, so we can do the cast return(((IPersistentCollection)collection).QueuedAdditionIterator); } }
/// <summary> /// Given a collection, get an iterator of all its children, loading them /// from the database if necessary. /// </summary> /// <param name="session">The session within which the cascade is occurring. </param> /// <param name="collectionType">The mapping type of the collection. </param> /// <param name="collection">The collection instance. </param> /// <returns> The children iterator. </returns> private static IEnumerable GetAllElementsIterator(IEventSource session, CollectionType collectionType, object collection) { return(collectionType.GetElementsIterator(collection, session)); }