예제 #1
0
        /// <summary>
        /// Imports the configuration database table.
        /// </summary>
        private void ImportBaseTable(DataTable srcTable, IBaseTable destTable)
        {
            // add primary keys if needed
            if (!srcTable.Columns.Contains(destTable.PrimaryKey))
            {
                srcTable.Columns.Add(destTable.PrimaryKey, typeof(int));
                srcTable.BeginLoadData();
                int colInd = srcTable.Columns.Count - 1;
                var id     = 1;

                foreach (DataRow row in srcTable.Rows)
                {
                    row[colInd] = id++;
                }

                srcTable.EndLoadData();
                srcTable.AcceptChanges();
            }

            // merge data
            destTable.Modified = true;
            var destProps = TypeDescriptor.GetProperties(destTable.ItemType);

            foreach (DataRowView srcRowView in srcTable.DefaultView)
            {
                object destItem = TableConverter.CreateItem(destTable.ItemType, srcRowView.Row, destProps);
                destTable.AddObject(destItem);
            }
        }