From: Sergey K. <jus...@us...> - 2005-02-16 20:15:21
|
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 ); } |