You don't have to persist, you have already persisted those objects (you have always an INSERT).
On Thu, Apr 28, 2011 at 11:50 PM, David Slayton <[email protected]>wrote: > I am working on an application that uses NHibernate 3.1.0 and builds a > large object graph of results (new unsaved transient objects), but, > depending on the status of the process, needs to exclude some of the > results from persistence. The method the application currently uses > to prevent persistence of new unsaved objects is to orphan them and > rely on garbage collection to clean them up. This works fine when > cascading all, but does not work when cascading all-delete-orphan. > > In the GetOrphans method of AbstractPersistentCollection I noticed > that the gathering of the currentIds filters out transient objects: > > if (current != null && ForeignKeys.IsNotTransient(entityName, > current, null, session)) > > but there is no corresponding filter when iterating over the old list > before the call to GetEntityIdentifierIfNotUnsaved and > GetEntityIdentifierIfNotUnsaved method will throw an exception if the > object does not have an identifier and is transient. We derive our > identifiers from identity column in the database (I understand that > this is not recommended practice, but the database for this > application was architected before adopting NHibernate) so we have to > persist to the database before orphaning the object in order for > cascade all-delete-orphan. > > Is it necessary for GetOrphans to include evaluation of transient > objects for the old list? I'm wondering why currentIds only includes > non-transient objects, but the old list does not include the same > restriction. > > Regards, > David Slayton -- Fabio Maulo
