File: System\Data\Entity\Design\SSDLGenerator\TableDetailsCollection.cs
Project: ndp\fx\src\DataEntityDesign\Design\System.Data.Entity.Design.csproj (System.Data.Entity.Design)
//---------------------------------------------------------------------
// <copyright file="TableDetailsCollection.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// @owner       Microsoft
// @backupOwner Microsoft
//---------------------------------------------------------------------
using System.Collections.Generic;
using System.Xml;
using System.Data.Common;
using System.Globalization;
using System.Data;
 
namespace System.Data.Entity.Design.SsdlGenerator
{
    /// <summary>
    /// Strongly typed DataTable for TableDetails
    /// </summary>
    [Serializable]
    internal sealed class TableDetailsCollection : System.Data.DataTable, System.Collections.IEnumerable
    {
        [NonSerialized]
        private System.Data.DataColumn _columnCatalog;
        [NonSerialized]
        private System.Data.DataColumn _columnSchema;
        [NonSerialized]
        private System.Data.DataColumn _columnTable;
        [NonSerialized]
        private System.Data.DataColumn _columnFieldOrdinal;
        [NonSerialized]
        private System.Data.DataColumn _columnFieldColumn;
        [NonSerialized]
        private System.Data.DataColumn _columnIsNullable;
        [NonSerialized]
        private System.Data.DataColumn _columnDataType;
        [NonSerialized]
        private System.Data.DataColumn _columnMaximumLength;
        [NonSerialized]
        private System.Data.DataColumn _columnDateTimePrecision;
        [NonSerialized]
        private System.Data.DataColumn _columnPrecision;
        [NonSerialized]
        private System.Data.DataColumn _columnScale;
        [NonSerialized]
        private System.Data.DataColumn _columnIsIdentity;
        [NonSerialized]
        private System.Data.DataColumn _columnIsServerGenerated;
        [NonSerialized]
        private System.Data.DataColumn _columnIsPrimaryKey;
 
        /// <summary>
        /// Constructs a TableDetailsDataTable
        /// </summary>
        public TableDetailsCollection()
        {
            this.TableName = "TableDetails";
            // had to remove these because of an fxcop violation
            //BeginInit();
            InitClass();
            //EndInit();
        }
 
        /// <summary>
        /// Constructs a new instance TableDetailsDataTable with a given SerializationInfo and StreamingContext
        /// </summary>
        /// <param name="serializationInfo"></param>
        /// <param name="streamingContext"></param>
        internal TableDetailsCollection(System.Runtime.Serialization.SerializationInfo serializationInfo,
            System.Runtime.Serialization.StreamingContext streamingContext)
            : base(serializationInfo, streamingContext)
        {
            UpdateMemberFieldsAfterDeserialization();
        }
 
        /// <summary>
        /// Gets the Catalog column
        /// </summary>
        public System.Data.DataColumn CatalogColumn
        {
            get
            {
                return this._columnCatalog;
            }
        }
 
        /// <summary>
        /// Gets the Schema column
        /// </summary>
        public System.Data.DataColumn SchemaColumn
        {
            get
            {
                return this._columnSchema;
            }
        }
 
        /// <summary>
        /// Gets the TableName column
        /// </summary>
        public System.Data.DataColumn TableNameColumn
        {
            get
            {
                return this._columnTable;
            }
        }
 
        /// <summary>
        /// Gets the ColumnName column
        /// </summary>
        public System.Data.DataColumn ColumnNameColumn
        {
            get
            {
                return this._columnFieldColumn;
            }
        }
 
        /// <summary>
        /// Gets the IsNullable column
        /// </summary>
        public System.Data.DataColumn IsNullableColumn
        {
            get
            {
                return this._columnIsNullable;
            }
        }
 
        /// <summary>
        /// Gets the DataType column
        /// </summary>
        public System.Data.DataColumn DataTypeColumn
        {
            get
            {
                return this._columnDataType;
            }
        }
 
        /// <summary>
        /// Gets the MaximumLength column
        /// </summary>
        public System.Data.DataColumn MaximumLengthColumn
        {
            get
            {
                return this._columnMaximumLength;
            }
        }
 
        /// <summary>
        /// Gets the Precision column
        /// </summary>
        public System.Data.DataColumn PrecisionColumn
        {
            get
            {
                return this._columnPrecision;
            }
        }
 
        /// <summary>
        /// Gets the Precision column
        /// </summary>
        public System.Data.DataColumn DateTimePrecisionColumn
        {
            get
            {
                return this._columnDateTimePrecision;
            }
        }
 
        /// <summary>
        /// Gets the Scale column
        /// </summary>
        public System.Data.DataColumn ScaleColumn
        {
            get
            {
                return this._columnScale;
            }
        }
 
        /// <summary>
        /// Gets the IsIdentityColumn column
        /// </summary>
        public System.Data.DataColumn IsIdentityColumn
        {
            get
            {
                return this._columnIsIdentity;
            }
        }
 
         /// <summary>
        /// Gets the IsIdentityColumn column
        /// </summary>
        public System.Data.DataColumn IsServerGeneratedColumn
        {
            get
            {
                return this._columnIsServerGenerated;
            }
        }
 
       /// <summary>
        /// Gets the IsPrimaryKey column
        /// </summary>
        public System.Data.DataColumn IsPrimaryKeyColumn
        {
            get
            {
                return this._columnIsPrimaryKey;
            }
        }
 
        /// <summary>
        /// Gets an enumerator over the rows.
        /// </summary>
        /// <returns>The row enumerator</returns>
        public System.Collections.IEnumerator GetEnumerator()
        {
            return this.Rows.GetEnumerator();
        }
 
        /// <summary>
        /// Creates an instance of this table
        /// </summary>
        /// <returns>The newly created instance.</returns>
        protected override System.Data.DataTable CreateInstance()
        {
            return new TableDetailsCollection();
        }
 
        private const string CATALOG = "CatalogName";
        private const string SCHEMA = "SchemaName";
        private const string TABLE = "TableName";
        private const string COLUMN = "ColumnName";
        private const string ORDINAL = "Ordinal";
        private const string IS_NULLABLE = "IsNullable";
        private const string DATA_TYPE = "DataType";
        private const string MAX_LENGTH = "MaximumLength";
        private const string PRECISION = "Precision";
        private const string DATETIMEPRECISION = "DateTimePrecision";
        private const string SCALE = "Scale";
        private const string IS_IDENTITY = "IsIdentity";
        private const string IS_SERVERGENERATED = "IsServerGenerated";
        private const string IS_PRIMARYKEY = "IsPrimaryKey";
 
        private void InitClass()
        {
            this._columnCatalog = new System.Data.DataColumn(CATALOG, typeof(string), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnCatalog);
            this._columnSchema = new System.Data.DataColumn(SCHEMA, typeof(string), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnSchema);
            this._columnTable = new System.Data.DataColumn(TABLE, typeof(string), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnTable);
            this._columnFieldColumn = new System.Data.DataColumn(COLUMN, typeof(string), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnFieldColumn);
            this._columnFieldOrdinal = new System.Data.DataColumn(ORDINAL, typeof(int), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnFieldOrdinal);
            this._columnIsNullable = new System.Data.DataColumn(IS_NULLABLE, typeof(bool), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnIsNullable);
            this._columnDataType = new System.Data.DataColumn(DATA_TYPE, typeof(string), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnDataType);
            this._columnMaximumLength = new System.Data.DataColumn(MAX_LENGTH, typeof(int), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnMaximumLength);
            this._columnPrecision = new System.Data.DataColumn(PRECISION, typeof(int), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnPrecision);
            this._columnDateTimePrecision = new System.Data.DataColumn(DATETIMEPRECISION, typeof(int), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnDateTimePrecision);
            this._columnScale = new System.Data.DataColumn(SCALE, typeof(int), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnScale);
            this._columnIsIdentity = new System.Data.DataColumn(IS_IDENTITY, typeof(bool), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnIsIdentity);
            this._columnIsServerGenerated = new System.Data.DataColumn(IS_SERVERGENERATED, typeof(bool), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnIsServerGenerated);
            this._columnIsPrimaryKey = new System.Data.DataColumn(IS_PRIMARYKEY, typeof(bool), null, System.Data.MappingType.Element);
            base.Columns.Add(this._columnIsPrimaryKey);
        }
 
        private void UpdateMemberFieldsAfterDeserialization()
        {
            this._columnCatalog = base.Columns[CATALOG];
            this._columnSchema = base.Columns[SCHEMA];
            this._columnTable = base.Columns[TABLE];
            this._columnFieldColumn = base.Columns[COLUMN];
            this._columnFieldOrdinal = base.Columns[ORDINAL];
            this._columnIsNullable = base.Columns[IS_NULLABLE];
            this._columnDataType = base.Columns[DATA_TYPE];
            this._columnMaximumLength = base.Columns[MAX_LENGTH];
            this._columnPrecision = base.Columns[PRECISION];
            this._columnDateTimePrecision = base.Columns[DATETIMEPRECISION];
            this._columnScale = base.Columns[SCALE];
            this._columnIsIdentity = base.Columns[IS_IDENTITY];
            this._columnIsServerGenerated = base.Columns[IS_SERVERGENERATED];
            this._columnIsPrimaryKey = base.Columns[IS_PRIMARYKEY];
        }
 
        /// <summary>
        /// Create a new row from a DataRowBuilder object.
        /// </summary>
        /// <param name="builder">The builder to create the row from.</param>
        /// <returns>The row that was created.</returns>
        protected override System.Data.DataRow NewRowFromBuilder(System.Data.DataRowBuilder builder)
        {
            return new TableDetailsRow(builder);
        }
 
        /// <summary>
        /// Gets the Type that this row is.
        /// </summary>
        /// <returns>The type of this row.</returns>
        protected override System.Type GetRowType()
        {
            return typeof(TableDetailsRow);
        }
 
  }
}