public int GetValues(object[] values)
        {
            if (values == null)
            {
                throw new ArgumentNullException("values");
            }
            int num = Math.Min(values.Length, this.FieldCount);

            for (int i = 0; i < num; i++)
            {
                if (this.sequentialAccess && this.nestedDataReaders[i] != null)
                {
                    this.currentColumn = i + 1;
                    XmlaDataReader xmlaDataReader = new XmlaDataReader(this, this.nestedDataReaders[i]);
                    xmlaDataReader.currentParentRow = this.dtStore.Rows.Count;
                    while (xmlaDataReader.InternalRead())
                    {
                    }
                    values[i] = xmlaDataReader;
                }
                else
                {
                    values[i] = this.GetValue(i);
                    if (this.sequentialAccess && values[i] is ColumnXmlReader)
                    {
                        values[i] = new ColumnXmlReader(values[i].ToString());
                    }
                }
            }
            return(num);
        }
        private object InternalGetValue(int ordinal)
        {
            if (this.isClosed)
            {
                throw new InvalidOperationException(XmlaSR.DataReaderClosedError);
            }
            if (!this.dataReady)
            {
                throw new InvalidOperationException(XmlaSR.DataReaderInvalidRowError);
            }
            if (this.xmlReader == null || this.xmlReader.ReadState == ReadState.Closed)
            {
                throw new InvalidOperationException();
            }
            if (ordinal < 0 || ordinal >= this.FieldCount)
            {
                throw new ArgumentOutOfRangeException("ordinal");
            }
            object obj;

            if (this.sequentialAccess)
            {
                obj = this.SequentialReadXmlValue(ordinal);
            }
            else
            {
                DataRow dataRow = this.dtStore.Rows[this.currentRow];
                if (this.nestedDataReaders[ordinal] == null)
                {
                    obj = null;
                    if (!(dataRow[ordinal] is DBNull))
                    {
                        obj = dataRow[ordinal];
                    }
                }
                else
                {
                    int num = 0;
                    if (!(dataRow[ordinal] is DBNull))
                    {
                        num = (int)dataRow[ordinal];
                    }
                    XmlaDataReader xmlaDataReader = this.nestedDataReaders[ordinal];
                    xmlaDataReader.currentRow = num - 1;
                    obj = xmlaDataReader;
                }
            }
            this.ThrowIfInlineError(obj);
            if (obj is XmlaDataReader)
            {
                XmlaDataReader xmlaDataReader2 = obj as XmlaDataReader;
                if (xmlaDataReader2.IsClosed)
                {
                    xmlaDataReader2.ReOpen();
                }
            }
            return(obj);
        }
        private object ReadColumnValue(int ordinal)
        {
            //Type type = FormattersHelpers.GetElementType(this.xmlReader, "http://www.w3.org/2001/XMLSchema-instance", null);
            Type type = FormattersHelpers.GetElementType(this.xmlReader, "http://www.w3.org/2001/XMLSchema-instance", typeof(object));

            if (type == null)
            {
                type = this.GetFieldType(ordinal);
            }
            XmlaDataReader xmlaDataReader = this.nestedDataReaders[ordinal];
            object         obj;

            if (xmlaDataReader == null)
            {
                string columnXsdTypeName = FormattersHelpers.GetColumnXsdTypeName(this.dtStore.Columns[ordinal]);
                bool   flag    = columnXsdTypeName == "xmlDocument";
                bool   isArray = type.IsArray && columnXsdTypeName != "base64Binary";
                if (!this.sequentialAccess)
                {
                    obj = FormattersHelpers.ReadRowsetProperty(this.xmlReader, this.xmlReader.LocalName, this.xmlReader.LookupNamespace(this.xmlReader.Prefix), type, false, isArray, false);
                    if (flag)
                    {
                        string          strIn           = obj as string;
                        ColumnXmlReader columnXmlReader = new ColumnXmlReader(strIn);
                        obj = columnXmlReader;
                    }
                }
                else if (flag)
                {
                    ColumnXmlReader columnXmlReader2 = new ColumnXmlReader(this.xmlReader, this.xmlReader.LocalName, this.xmlReader.NamespaceURI);
                    obj = columnXmlReader2;
                }
                else
                {
                    obj = FormattersHelpers.ReadRowsetProperty(this.xmlReader, this.xmlReader.LocalName, this.xmlReader.NamespaceURI, type, false, isArray, false);
                }
            }
            else if (this.sequentialAccess)
            {
                obj = xmlaDataReader;
            }
            else
            {
                bool flag2 = xmlaDataReader.IsClosed;
                if (flag2)
                {
                    xmlaDataReader.ReOpen();
                }
                int count = xmlaDataReader.dtStore.Rows.Count;
                xmlaDataReader.currentParentRow = this.dtStore.Rows.Count;
                while (xmlaDataReader.InternalRead())
                {
                }
                obj = count;
            }
            return(obj);
        }
 private XmlaDataReader(XmlaDataReader parentReader)
 {
     this.columnNameLookup    = new Hashtable();
     this.columnXmlNameLookup = new Hashtable();
     this.rowsetNames         = new List <string>();
     this.rowElement          = FormattersHelpers.RowElement;
     this.rowNamespace        = FormattersHelpers.RowElementNamespace;
     this.readersXmlDepth     = -1;
     //base..ctor();
     this.parentReader = parentReader;
     this.InternalInitialize(parentReader.xmlReader, parentReader.commandBehavior, parentReader.owner);
 }
 public AdomdDataReader GetDataReader(int ordinal)
 {
     if (this.embeddedReaders == null)
     {
         this.embeddedReaders = new AdomdDataReader[this.FieldCount];
     }
     if (this.embeddedReaders[ordinal] == null)
     {
         XmlaDataReader dataReader = this.XmlaDataReader.GetDataReader(ordinal);
         this.embeddedReaders[ordinal] = new AdomdDataReader(dataReader);
     }
     return(this.embeddedReaders[ordinal]);
 }
        private void AdjustDataTableNames(DataTable[] dataTables)
        {
            XmlaDataReader xmlaDataReader = (this.dataReader != null) ? this.dataReader.XmlaDataReader : null;

            if (xmlaDataReader != null && xmlaDataReader.RowsetNames != null && xmlaDataReader.RowsetNames.Count == dataTables.Length)
            {
                for (int i = 0; i < dataTables.Length; i++)
                {
                    if (!string.IsNullOrEmpty(xmlaDataReader.RowsetNames[i]))
                    {
                        dataTables[i].TableName = xmlaDataReader.RowsetNames[i];
                    }
                }
            }
        }
        private void AdjustDataSet(DataSet dataSet)
        {
            XmlaDataReader xmlaDataReader = (this.dataReader != null) ? this.dataReader.XmlaDataReader : null;

            if (xmlaDataReader != null)
            {
                DataTable[] array = new DataTable[dataSet.Tables.Count];
                dataSet.Tables.CopyTo(array, 0);
                this.AdjustDataTableNames(array);
            }
            if (this.isAffectedObjects)
            {
                dataSet.DataSetName = "AffectedObjects";
                dataSet.ExtendedProperties["BaseVersion"]    = this.AffectedObjectsBaseVersion;
                dataSet.ExtendedProperties["CurrentVersion"] = this.AffectedObjectsCurrentVersion;
                dataSet.ExtendedProperties["name"]           = this.AffectedObjectsDatabase;
            }
        }
 private XmlaDataReader(XmlaDataReader parentReader, XmlaDataReader nested)
 {
     this.columnNameLookup    = new Hashtable();
     this.columnXmlNameLookup = new Hashtable();
     this.rowsetNames         = new List <string>();
     this.rowElement          = FormattersHelpers.RowElement;
     this.rowNamespace        = FormattersHelpers.RowElementNamespace;
     this.readersXmlDepth     = -1;
     //base..ctor();
     this.xmlReader           = nested.xmlReader;
     this.commandBehavior     = (nested.commandBehavior & ~CommandBehavior.SequentialAccess);
     this.owner               = nested.owner;
     this.schemaTable         = nested.schemaTable;
     this.sequentialAccess    = false;
     this.columnCount         = nested.columnCount;
     this.currentColumn       = 0;
     this.dataReady           = false;
     this.columnNameLookup    = nested.columnNameLookup;
     this.columnXmlNameLookup = nested.columnXmlNameLookup;
     this.depth               = nested.depth;
     this.isClosed            = false;
     this.parentReader        = nested.parentReader;
     this.dtStore             = nested.dtStore;
     this.currentRow          = -1;
     this.currentParentRow    = nested.currentParentRow;
     this.rowElement          = nested.rowElement;
     this.rowNamespace        = nested.rowNamespace;
     this.nestedDataReaders   = new XmlaDataReader[nested.nestedDataReaders.Length];
     for (int i = 0; i < nested.nestedDataReaders.Length; i++)
     {
         if (nested.nestedDataReaders[i] != null)
         {
             this.nestedDataReaders[i] = new XmlaDataReader(nested, nested.nestedDataReaders[i]);
         }
         else
         {
             this.nestedDataReaders[i] = null;
         }
     }
 }
            internal Enumerator(XmlaDataReader dataReader)
            {
                bool closeReader = (CommandBehavior.CloseConnection & dataReader.commandBehavior) != CommandBehavior.Default;

                this.enumerator = new DbEnumerator(dataReader, closeReader);
            }
 private AdomdDataReader(XmlaDataReader xmlaDataReader)
 {
     this.XmlaDataReader = xmlaDataReader;
 }