private static IList <T> RunQueryForList <T>(RequestScope request, ISqlMapSession session, object parameterObject, IStatement _statement) { IList <T> list = new List <T>(); using (IDbCommand command = request.IDbCommand) { list = (_statement.ListClass == null) ? (new List <T>()) : (_statement.CreateInstanceOfGenericListClass <T>()); IDataReader reader = command.ExecuteReader(); try { while (reader.Read()) { object obj = ResultStrategyFactory.Get(_statement).Process(request, ref reader, null); if (obj != BaseStrategy.SKIP) { list.Add((T)obj); } } } catch { throw; } finally { reader.Close(); reader.Dispose(); } ExecutePostSelect(request); RetrieveOutputParameters(request, session, command, parameterObject); } return(list); }
internal static IList <T> RunQueryForList <T>(IStatement statement, RequestScope request, ISession session, object parameterObject, IList <T> resultObject, RowDelegate <T> rowDelegate) { IResultStrategy resultStrategy = ResultStrategyFactory.Get(statement); IList <T> list = resultObject; using (IDbCommand command = request.IDbCommand) { if (resultObject == null) { if (statement.ListClass == null) { list = new List <T>(); } else { list = statement.CreateInstanceOfGenericListClass <T>(); } } IDataReader reader = command.ExecuteReader(); try { do { if (rowDelegate == null) { while (reader.Read()) { try { object obj = resultStrategy.Process(request, ref reader, null); if (obj != BaseStrategy.SKIP) { list.Add((T)obj); } } catch (Exception ed) { string ms = ed.Message; } } } else { while (reader.Read()) { T obj = (T)resultStrategy.Process(request, ref reader, null); rowDelegate(obj, parameterObject, list); } } }while (reader.NextResult()); } finally { reader.Close(); reader.Dispose(); } ExecuteDelayedLoad(request); RetrieveOutputParameters(request, session, command, parameterObject); } return(list); }