DataRowDbColumn.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.Common;
  5. using System.Text;
  6. namespace Dfs.WayneChina.SpsDbManager
  7. {
  8. internal class DataRowDbColumn : DbColumn
  9. {
  10. #region Fields
  11. private readonly DataColumnCollection schemaColumns;
  12. private readonly DataRow schemaRow;
  13. #endregion
  14. #region Constructors and Destructors
  15. public DataRowDbColumn(DataRow readerSchemaRow, DataColumnCollection readerSchemaColumns)
  16. {
  17. this.schemaRow = readerSchemaRow;
  18. this.schemaColumns = readerSchemaColumns;
  19. this.PopulateFields();
  20. }
  21. #endregion
  22. #region Methods
  23. private T GetDbColumnValue<T>(string columnName)
  24. {
  25. if (!this.schemaColumns.Contains(columnName))
  26. {
  27. return default(T);
  28. }
  29. object schemaObject = this.schemaRow[columnName];
  30. if (schemaObject is T variable)
  31. {
  32. return variable;
  33. }
  34. return default(T);
  35. }
  36. /// <summary>
  37. /// </summary>
  38. private void PopulateFields()
  39. {
  40. this.AllowDBNull = this.GetDbColumnValue<bool?>(SchemaTableColumn.AllowDBNull);
  41. this.BaseCatalogName = this.GetDbColumnValue<string>(SchemaTableOptionalColumn.BaseCatalogName);
  42. this.BaseColumnName = this.GetDbColumnValue<string>(SchemaTableColumn.BaseColumnName);
  43. this.BaseSchemaName = this.GetDbColumnValue<string>(SchemaTableColumn.BaseSchemaName);
  44. this.BaseServerName = this.GetDbColumnValue<string>(SchemaTableOptionalColumn.BaseServerName);
  45. this.BaseTableName = this.GetDbColumnValue<string>(SchemaTableColumn.BaseTableName);
  46. this.ColumnName = this.GetDbColumnValue<string>(SchemaTableColumn.ColumnName);
  47. this.ColumnOrdinal = this.GetDbColumnValue<int?>(SchemaTableColumn.ColumnOrdinal);
  48. this.ColumnSize = this.GetDbColumnValue<int?>(SchemaTableColumn.ColumnSize);
  49. this.IsAliased = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsAliased);
  50. this.IsAutoIncrement = this.GetDbColumnValue<bool?>(SchemaTableOptionalColumn.IsAutoIncrement);
  51. this.IsExpression = this.GetDbColumnValue<bool>(SchemaTableColumn.IsExpression);
  52. this.IsHidden = this.GetDbColumnValue<bool?>(SchemaTableOptionalColumn.IsHidden);
  53. this.IsIdentity = this.GetDbColumnValue<bool?>("IsIdentity");
  54. this.IsKey = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsKey);
  55. this.IsLong = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsLong);
  56. this.IsReadOnly = this.GetDbColumnValue<bool?>(SchemaTableOptionalColumn.IsReadOnly);
  57. this.IsUnique = this.GetDbColumnValue<bool?>(SchemaTableColumn.IsUnique);
  58. this.NumericPrecision = this.GetDbColumnValue<int?>(SchemaTableColumn.NumericPrecision);
  59. this.NumericScale = this.GetDbColumnValue<int?>(SchemaTableColumn.NumericScale);
  60. this.UdtAssemblyQualifiedName = this.GetDbColumnValue<string>("UdtAssemblyQualifiedName");
  61. this.DataType = this.GetDbColumnValue<Type>(SchemaTableColumn.DataType);
  62. this.DataTypeName = this.GetDbColumnValue<string>("DataTypeName");
  63. }
  64. #endregion
  65. }
  66. }