1 //---------------------------------------------------------------------
2 // <copyright file="TableDetailsCollection.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9 using System
.Collections
.Generic
;
11 using System
.Data
.Common
;
12 using System
.Globalization
;
15 namespace System
.Data
.Entity
.Design
.SsdlGenerator
18 /// Strongly typed DataTable for TableDetails
21 internal sealed class TableDetailsCollection
: System
.Data
.DataTable
, System
.Collections
.IEnumerable
24 private System
.Data
.DataColumn _columnCatalog
;
26 private System
.Data
.DataColumn _columnSchema
;
28 private System
.Data
.DataColumn _columnTable
;
30 private System
.Data
.DataColumn _columnFieldOrdinal
;
32 private System
.Data
.DataColumn _columnFieldColumn
;
34 private System
.Data
.DataColumn _columnIsNullable
;
36 private System
.Data
.DataColumn _columnDataType
;
38 private System
.Data
.DataColumn _columnMaximumLength
;
40 private System
.Data
.DataColumn _columnDateTimePrecision
;
42 private System
.Data
.DataColumn _columnPrecision
;
44 private System
.Data
.DataColumn _columnScale
;
46 private System
.Data
.DataColumn _columnIsIdentity
;
48 private System
.Data
.DataColumn _columnIsServerGenerated
;
50 private System
.Data
.DataColumn _columnIsPrimaryKey
;
53 /// Constructs a TableDetailsDataTable
55 public TableDetailsCollection()
57 this.TableName
= "TableDetails";
58 // had to remove these because of an fxcop violation
65 /// Constructs a new instance TableDetailsDataTable with a given SerializationInfo and StreamingContext
67 /// <param name="serializationInfo"></param>
68 /// <param name="streamingContext"></param>
69 internal TableDetailsCollection(System
.Runtime
.Serialization
.SerializationInfo serializationInfo
,
70 System
.Runtime
.Serialization
.StreamingContext streamingContext
)
71 : base(serializationInfo
, streamingContext
)
73 UpdateMemberFieldsAfterDeserialization();
77 /// Gets the Catalog column
79 public System
.Data
.DataColumn CatalogColumn
83 return this._columnCatalog
;
88 /// Gets the Schema column
90 public System
.Data
.DataColumn SchemaColumn
94 return this._columnSchema
;
99 /// Gets the TableName column
101 public System
.Data
.DataColumn TableNameColumn
105 return this._columnTable
;
110 /// Gets the ColumnName column
112 public System
.Data
.DataColumn ColumnNameColumn
116 return this._columnFieldColumn
;
121 /// Gets the IsNullable column
123 public System
.Data
.DataColumn IsNullableColumn
127 return this._columnIsNullable
;
132 /// Gets the DataType column
134 public System
.Data
.DataColumn DataTypeColumn
138 return this._columnDataType
;
143 /// Gets the MaximumLength column
145 public System
.Data
.DataColumn MaximumLengthColumn
149 return this._columnMaximumLength
;
154 /// Gets the Precision column
156 public System
.Data
.DataColumn PrecisionColumn
160 return this._columnPrecision
;
165 /// Gets the Precision column
167 public System
.Data
.DataColumn DateTimePrecisionColumn
171 return this._columnDateTimePrecision
;
176 /// Gets the Scale column
178 public System
.Data
.DataColumn ScaleColumn
182 return this._columnScale
;
187 /// Gets the IsIdentityColumn column
189 public System
.Data
.DataColumn IsIdentityColumn
193 return this._columnIsIdentity
;
198 /// Gets the IsIdentityColumn column
200 public System
.Data
.DataColumn IsServerGeneratedColumn
204 return this._columnIsServerGenerated
;
209 /// Gets the IsPrimaryKey column
211 public System
.Data
.DataColumn IsPrimaryKeyColumn
215 return this._columnIsPrimaryKey
;
220 /// Gets an enumerator over the rows.
222 /// <returns>The row enumerator</returns>
223 public System
.Collections
.IEnumerator
GetEnumerator()
225 return this.Rows
.GetEnumerator();
229 /// Creates an instance of this table
231 /// <returns>The newly created instance.</returns>
232 protected override System
.Data
.DataTable
CreateInstance()
234 return new TableDetailsCollection();
237 private const string CATALOG
= "CatalogName";
238 private const string SCHEMA
= "SchemaName";
239 private const string TABLE
= "TableName";
240 private const string COLUMN
= "ColumnName";
241 private const string ORDINAL
= "Ordinal";
242 private const string IS_NULLABLE
= "IsNullable";
243 private const string DATA_TYPE
= "DataType";
244 private const string MAX_LENGTH
= "MaximumLength";
245 private const string PRECISION
= "Precision";
246 private const string DATETIMEPRECISION
= "DateTimePrecision";
247 private const string SCALE
= "Scale";
248 private const string IS_IDENTITY
= "IsIdentity";
249 private const string IS_SERVERGENERATED
= "IsServerGenerated";
250 private const string IS_PRIMARYKEY
= "IsPrimaryKey";
252 private void InitClass()
254 this._columnCatalog
= new System
.Data
.DataColumn(CATALOG
, typeof(string), null, System
.Data
.MappingType
.Element
);
255 base.Columns
.Add(this._columnCatalog
);
256 this._columnSchema
= new System
.Data
.DataColumn(SCHEMA
, typeof(string), null, System
.Data
.MappingType
.Element
);
257 base.Columns
.Add(this._columnSchema
);
258 this._columnTable
= new System
.Data
.DataColumn(TABLE
, typeof(string), null, System
.Data
.MappingType
.Element
);
259 base.Columns
.Add(this._columnTable
);
260 this._columnFieldColumn
= new System
.Data
.DataColumn(COLUMN
, typeof(string), null, System
.Data
.MappingType
.Element
);
261 base.Columns
.Add(this._columnFieldColumn
);
262 this._columnFieldOrdinal
= new System
.Data
.DataColumn(ORDINAL
, typeof(int), null, System
.Data
.MappingType
.Element
);
263 base.Columns
.Add(this._columnFieldOrdinal
);
264 this._columnIsNullable
= new System
.Data
.DataColumn(IS_NULLABLE
, typeof(bool), null, System
.Data
.MappingType
.Element
);
265 base.Columns
.Add(this._columnIsNullable
);
266 this._columnDataType
= new System
.Data
.DataColumn(DATA_TYPE
, typeof(string), null, System
.Data
.MappingType
.Element
);
267 base.Columns
.Add(this._columnDataType
);
268 this._columnMaximumLength
= new System
.Data
.DataColumn(MAX_LENGTH
, typeof(int), null, System
.Data
.MappingType
.Element
);
269 base.Columns
.Add(this._columnMaximumLength
);
270 this._columnPrecision
= new System
.Data
.DataColumn(PRECISION
, typeof(int), null, System
.Data
.MappingType
.Element
);
271 base.Columns
.Add(this._columnPrecision
);
272 this._columnDateTimePrecision
= new System
.Data
.DataColumn(DATETIMEPRECISION
, typeof(int), null, System
.Data
.MappingType
.Element
);
273 base.Columns
.Add(this._columnDateTimePrecision
);
274 this._columnScale
= new System
.Data
.DataColumn(SCALE
, typeof(int), null, System
.Data
.MappingType
.Element
);
275 base.Columns
.Add(this._columnScale
);
276 this._columnIsIdentity
= new System
.Data
.DataColumn(IS_IDENTITY
, typeof(bool), null, System
.Data
.MappingType
.Element
);
277 base.Columns
.Add(this._columnIsIdentity
);
278 this._columnIsServerGenerated
= new System
.Data
.DataColumn(IS_SERVERGENERATED
, typeof(bool), null, System
.Data
.MappingType
.Element
);
279 base.Columns
.Add(this._columnIsServerGenerated
);
280 this._columnIsPrimaryKey
= new System
.Data
.DataColumn(IS_PRIMARYKEY
, typeof(bool), null, System
.Data
.MappingType
.Element
);
281 base.Columns
.Add(this._columnIsPrimaryKey
);
284 private void UpdateMemberFieldsAfterDeserialization()
286 this._columnCatalog
= base.Columns
[CATALOG
];
287 this._columnSchema
= base.Columns
[SCHEMA
];
288 this._columnTable
= base.Columns
[TABLE
];
289 this._columnFieldColumn
= base.Columns
[COLUMN
];
290 this._columnFieldOrdinal
= base.Columns
[ORDINAL
];
291 this._columnIsNullable
= base.Columns
[IS_NULLABLE
];
292 this._columnDataType
= base.Columns
[DATA_TYPE
];
293 this._columnMaximumLength
= base.Columns
[MAX_LENGTH
];
294 this._columnPrecision
= base.Columns
[PRECISION
];
295 this._columnDateTimePrecision
= base.Columns
[DATETIMEPRECISION
];
296 this._columnScale
= base.Columns
[SCALE
];
297 this._columnIsIdentity
= base.Columns
[IS_IDENTITY
];
298 this._columnIsServerGenerated
= base.Columns
[IS_SERVERGENERATED
];
299 this._columnIsPrimaryKey
= base.Columns
[IS_PRIMARYKEY
];
303 /// Create a new row from a DataRowBuilder object.
305 /// <param name="builder">The builder to create the row from.</param>
306 /// <returns>The row that was created.</returns>
307 protected override System
.Data
.DataRow
NewRowFromBuilder(System
.Data
.DataRowBuilder builder
)
309 return new TableDetailsRow(builder
);
313 /// Gets the Type that this row is.
315 /// <returns>The type of this row.</returns>
316 protected override System
.Type
GetRowType()
318 return typeof(TableDetailsRow
);