Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30719/src/NHibernate/Loader
Modified Files:
Loader.cs
Log Message:
Renamed PersistentCollection.ForceLoad to ForceInitialization, in accordance with H2.1
Added non-lazy collections handling which fixed a bug when non-lazy collections didn't initialize.
Index: Loader.cs
===================================================================
RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/Loader.cs,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** Loader.cs 6 Feb 2005 01:59:02 -0000 1.46
--- Loader.cs 16 Feb 2005 20:14:38 -0000 1.47
***************
*** 123,126 ****
--- 123,156 ----
}
+ // This method is called DoQueryAndInitializeNonLazyCollections in H2.1,
+ // since DoFind is called DoQuery and is split into several smaller methods.
+ private IList DoFindAndInitializeNonLazyCollections(
+ ISessionImplementor session,
+ QueryParameters parameters,
+ object optionalObject,
+ object optionalID,
+ PersistentCollection optionalCollection,
+ object optionalCollectionOwner,
+ bool returnProxies )
+ {
+ session.BeforeLoad();
+
+ IList result;
+
+ try
+ {
+ result = DoFind(
+ session, parameters, optionalObject, optionalID,
+ optionalCollection, optionalCollectionOwner, returnProxies);
+ }
+ finally
+ {
+ session.AfterLoad();
+ }
+
+ session.InitializeNonLazyCollections();
+ return result;
+ }
+
/// <summary>
/// Execute an SQL query and attempt to instantiate instances of the class mapped by the given
***************
*** 798,802 ****
{
QueryParameters qp = new QueryParameters( types, values );
! return DoFind( session, qp, optionalObject, optionalID, null, null, returnProxies );
}
--- 828,832 ----
{
QueryParameters qp = new QueryParameters( types, values );
! return DoFindAndInitializeNonLazyCollections( session, qp, optionalObject, optionalID, null, null, returnProxies );
}
***************
*** 818,822 ****
{
QueryParameters qp = new QueryParameters( new IType[ ] {type}, new object[ ] {id} );
! return DoFind( session, qp, null, null, collection, owner, true );
}
--- 848,852 ----
{
QueryParameters qp = new QueryParameters( new IType[ ] {type}, new object[ ] {id} );
! return DoFindAndInitializeNonLazyCollections( session, qp, null, null, collection, owner, true );
}
***************
*** 833,837 ****
bool returnProxies )
{
! return DoFind( session, parameters, null, null, null, null, returnProxies );
}
--- 863,867 ----
bool returnProxies )
{
! return DoFindAndInitializeNonLazyCollections( session, parameters, null, null, null, null, returnProxies );
}
|