123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.Common;
- using System.Text;
- namespace Dfs.WayneChina.SpsDbManager
- {
- internal class DataRowDbColumn : DbColumn
- {
- #region Fields
- private readonly DataColumnCollection schemaColumns;
- private readonly DataRow schemaRow;
- #endregion
- #region Constructors and Destructors
- public DataRowDbColumn(DataRow readerSchemaRow, DataColumnCollection readerSchemaColumns)
- {
- this.schemaRow = readerSchemaRow;
- this.schemaColumns = readerSchemaColumns;
- this.PopulateFields();
- }
- #endregion
- #region Methods
- private T GetDbColumnValue<T>(string columnName)
- {
- if (!this.schemaColumns.Contains(columnName))
- {
- return default(T);
- }
- object schemaObject = this.schemaRow[columnName];
- if (schemaObject is T variable)
- {
- return variable;
- }
- return default(T);
- }
- /// <summary>
- /// </summary>
- private void PopulateFields()
- {
- this.AllowDBNull = this.GetDbColumnValue<bool?>(SchemaTableColumn.AllowDBNull);
- this.BaseCatalogName = this.GetDbColumnValue<string>(SchemaTableOptionalColumn.BaseCatalogName);
- this.BaseColumnName = this.GetDbColumnValue<string>(SchemaTableColumn.BaseColumnName);
- this.BaseSchemaName = this.GetDbColumnValue<string>(SchemaTableColumn.BaseSchemaName);
- this.BaseServerName = this.GetDbColumnValue<string>(SchemaTableOptionalColumn.BaseServerName);
- this.BaseTableName = this.GetDbColumnValue<string>(SchemaTableColumn.BaseTableName);
- this.ColumnName = this.GetDbColumnValue<string>(SchemaTableColumn.ColumnName);
- this.ColumnOrdinal = this.GetDbColumnValue<int?>(SchemaTableColumn.ColumnOrdinal);
- this.ColumnSize = this.GetDbColumnValue<int?>(SchemaTableColumn.ColumnSize);
- this.IsAliased = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsAliased);
- this.IsAutoIncrement = this.GetDbColumnValue<bool?>(SchemaTableOptionalColumn.IsAutoIncrement);
- this.IsExpression = this.GetDbColumnValue<bool>(SchemaTableColumn.IsExpression);
- this.IsHidden = this.GetDbColumnValue<bool?>(SchemaTableOptionalColumn.IsHidden);
- this.IsIdentity = this.GetDbColumnValue<bool?>("IsIdentity");
- this.IsKey = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsKey);
- this.IsLong = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsLong);
- this.IsReadOnly = this.GetDbColumnValue<bool?>(SchemaTableOptionalColumn.IsReadOnly);
- this.IsUnique = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsUnique);
- this.NumericPrecision = this.GetDbColumnValue<int?>(SchemaTableColumn.NumericPrecision);
- this.NumericScale = this.GetDbColumnValue<int?>(SchemaTableColumn.NumericScale);
- this.UdtAssemblyQualifiedName = this.GetDbColumnValue<string>("UdtAssemblyQualifiedName");
- this.DataType = this.GetDbColumnValue<Type>(SchemaTableColumn.DataType);
- this.DataTypeName = this.GetDbColumnValue<string>("DataTypeName");
- }
- #endregion
- }
- }
|