Ejemplo n.º 1
0
        public override IList GetResultList(IList results, IResultTransformer resultTransformer)
        {
            // meant to handle dynamic instantiation queries...
            HolderInstantiator holderInstantiator = HolderInstantiator.GetHolderInstantiator(_selectNewTransformer,
                                                                                             resultTransformer,
                                                                                             _queryReturnAliases);

            if (holderInstantiator.IsRequired)
            {
                for (int i = 0; i < results.Count; i++)
                {
                    var    row    = (Object[])results[i];
                    Object result = holderInstantiator.Instantiate(row);
                    results[i] = result;
                }

                if (!HasSelectNew && resultTransformer != null)
                {
                    return(resultTransformer.TransformList(results));
                }
                else
                {
                    return(results);
                }
            }
            else
            {
                return(results);
            }
        }
Ejemplo n.º 2
0
        protected virtual IList GetResultList(IList results)
        {
            for (int i = 0, len = results.Count; i < len; ++i)
            {
                IList              subList            = (IList)results[i];
                QueryParameters    parameter          = Parameters[i];
                HolderInstantiator holderInstantiator = GetHolderInstantiator(parameter);
                if (holderInstantiator.IsRequired)
                {
                    for (int j = 0; j < subList.Count; j++)
                    {
                        object[] row = subList[j] as object[] ?? new[] { subList[j] };
                        subList[j] = holderInstantiator.Instantiate(row);
                    }

                    IResultTransformer transformer =
                        holderInstantiator.ResultTransformer;
                    if (transformer != null)
                    {
                        results[i] = transformer.TransformList(subList);
                    }
                }
            }
            return(results);
        }
Ejemplo n.º 3
0
        private void PostMoveNext(bool hasNext)
        {
            _startedReading = true;
            _hasNext        = hasNext;
            _currentRow++;
            if (_selection != null && _selection.MaxRows != RowSelection.NoValue)
            {
                _hasNext = _hasNext && (_currentRow < _selection.MaxRows);
            }
            // there are no more records in the DataReader so clean up
            if (!_hasNext)
            {
                log.Debug("exhausted results");
                _currentResult = null;
                _sess.Batcher.CloseCommand(_cmd, _reader);
            }
            else
            {
                log.Debug("retrieving next results");
                bool isHolder = _holderInstantiator.IsRequired;

                if (_single && !isHolder)
                {
                    _currentResult = _types[0].NullSafeGet(_reader, _names[0], _sess, null);
                }
                else
                {
                    object[] currentResults = new object[_types.Length];

                    // move through each of the ITypes contained in the IDataReader and convert them
                    // to their objects.
                    for (int i = 0; i < _types.Length; i++)
                    {
                        // The IType knows how to extract its value out of the IDataReader.  If the IType
                        // is a value type then the value will simply be pulled out of the IDataReader.  If
                        // the IType is an Entity type then the IType will extract the id from the IDataReader
                        // and use the ISession to load an instance of the object.
                        currentResults[i] = _types[i].NullSafeGet(_reader, _names[i], _sess, null);
                    }

                    if (isHolder)
                    {
                        _currentResult = _holderInstantiator.Instantiate(currentResults);
                    }
                    else
                    {
                        _currentResult = currentResults;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        private IList GetTransformedResults(IList source, HolderInstantiator holderInstantiator)
        {
            if (!holderInstantiator.IsRequired)
            {
                return(source);
            }
            for (int j = 0; j < source.Count; j++)
            {
                object[] row = source[j] as object[] ?? new[] { source[j] };
                source[j] = holderInstantiator.Instantiate(row);
            }

            return(holderInstantiator.ResultTransformer.TransformList(source));
        }
Ejemplo n.º 5
0
        public override IList GetResultList(IList results, IResultTransformer resultTransformer)
        {
            // meant to handle dynamic instantiation queries...(Copy from QueryLoader)
            HolderInstantiator holderInstantiator =
                HolderInstantiator.GetHolderInstantiator(null, resultTransformer, ReturnAliasesForTransformer);

            if (holderInstantiator.IsRequired)
            {
                for (int i = 0; i < results.Count; i++)
                {
                    object[] row    = (object[])results[i];
                    object   result = holderInstantiator.Instantiate(row);
                    results[i] = result;
                }

                return(resultTransformer.TransformList(results));
            }
            else
            {
                return(results);
            }
        }