From: Paul H. <pha...@us...> - 2005-03-27 23:30:37
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2691/nhibernate/src/NHibernate/Impl Modified Files: SessionImpl.cs Log Message: Implements SQL querying/loading as per 2.1! Index: SessionImpl.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl/SessionImpl.cs,v retrieving revision 1.76 retrieving revision 1.77 diff -C2 -d -r1.76 -r1.77 *** SessionImpl.cs 26 Mar 2005 12:30:24 -0000 1.76 --- SessionImpl.cs 27 Mar 2005 23:30:27 -0000 1.77 *************** *** 13,16 **** --- 13,17 ---- using NHibernate.Persister; using NHibernate.Proxy; + using NHibernate.SqlTypes; using NHibernate.Type; using NHibernate.Util; *************** *** 5248,5251 **** --- 5249,5268 ---- } + SqlType[] positionalTypes = new SqlType[ queryParameters.PositionalParameterTypes.Length ]; + for ( int i = 0; i < queryParameters.PositionalParameterTypes.Length; i++ ) + { + IType type = queryParameters.PositionalParameterTypes[ i ] ; + positionalTypes[ i ] = type.SqlTypes( factory )[ 0 ]; + } + + IDictionary namedTypes = new Hashtable( queryParameters.NamedParameters.Count ); + foreach( DictionaryEntry de in queryParameters.NamedParameters ) + { + string name = (string) de.Key; + TypedValue typedval = (TypedValue) de.Value; + IType type = typedval.Type; + namedTypes[ name ] = type.SqlTypes( factory )[ 0 ]; + } + ISqlLoadable[] persisters = new ISqlLoadable[ classes.Length ] ; for ( int i = 0; i < classes.Length; i++ ) *************** *** 5255,5259 **** // TODO: 2.1+ We could cache these ! SqlLoader loader = new SqlLoader( aliases, persisters, factory, sqlQuery, querySpaces ); AutoFlushIfRequired( loader.QuerySpaces ); --- 5272,5277 ---- // TODO: 2.1+ We could cache these ! // NB In NHibernate we need the queryParameters to obtain the types of positional parameters ! SqlLoader loader = new SqlLoader( aliases, persisters, factory, sqlQuery, querySpaces, positionalTypes, namedTypes ); AutoFlushIfRequired( loader.QuerySpaces ); |