예제 #1
0
        internal int LoadDataRowChapters(DataRow dataRow)
        {
            int datarowadded = 0;

            int rowLength = _chapterMap.Length;

            for (int i = 0; i < rowLength; ++i)
            {
                if (_chapterMap[i])
                {
                    object readerValue = _readerDataValues[i];
                    if ((null != readerValue) && !Convert.IsDBNull(readerValue))   // MDAC 70441
                    {
                        IDataReader nestedReader = (IDataReader)readerValue;

                        if (!nestedReader.IsClosed)
                        {
                            Debug.Assert(null != this.dataSet, "if chapters, then Fill(DataSet,...) not Fill(DataTable,...)");

                            object     parentChapterValue;
                            DataColumn parentChapterColumn;
                            if (null == _indexMap)
                            {
                                parentChapterColumn = dataTable.Columns[i];
                                parentChapterValue  = dataRow[parentChapterColumn];
                            }
                            else
                            {
                                parentChapterColumn = dataTable.Columns[_indexMap[i]];
                                parentChapterValue  = dataRow[parentChapterColumn];
                            }

                            // correct on Fill, not FillFromReader
                            string chapterTableName = tableMapping.SourceTable + this.fieldNames[i]; // MDAC 70908
                            datarowadded += adapter.FillFromReader(this.dataSet, chapterTableName, nestedReader, 0, 0, parentChapterColumn, parentChapterValue);

                            nestedReader.Dispose();
                        }
                    }
                }
            }
            return(datarowadded);
        }