internal Column(DataRow row, Table source) { _table = source; _unique = new Unique(this, row); if (row.IsNull("AUTOINCREMENT") == false && (bool)row["AUTOINCREMENT"] == true) _table.PrimaryKey.AutoIncrement = true; _dataType = (row.IsNull("DATA_TYPE") == false) ? row["DATA_TYPE"].ToString() : String.Empty; _columnName = row["COLUMN_NAME"].ToString(); _origName = _columnName; _allowNulls = (bool)row["IS_NULLABLE"]; _defaultValue = (row.IsNull("COLUMN_DEFAULT") == false) ? row["COLUMN_DEFAULT"].ToString() : String.Empty; _collate = (row.IsNull("COLLATION_NAME") == false) ? row["COLLATION_NAME"].ToString() : String.Empty; string edmtype = (row.IsNull("EDM_TYPE") == false) ? row["EDM_TYPE"].ToString() : String.Empty; if (edmtype == "nvarchar" || edmtype == "varchar" || edmtype == "blob" || edmtype == "nchar" || edmtype == "char") { int size = (row.IsNull("CHARACTER_MAXIMUM_LENGTH") == false) ? Convert.ToInt32(row["CHARACTER_MAXIMUM_LENGTH"], CultureInfo.InvariantCulture) : int.MaxValue; if (size != int.MaxValue) _dataType = string.Format(CultureInfo.InvariantCulture, "{0}({1})", _dataType, size); } else if (edmtype == "decimal") { int size = (row.IsNull("NUMERIC_PRECISION") == false) ? Convert.ToInt32(row["NUMERIC_PRECISION"], CultureInfo.InvariantCulture) : 53; int scale = (row.IsNull("NUMERIC_SCALE") == false) ? Convert.ToInt32(row["NUMERIC_SCALE"], CultureInfo.InvariantCulture) : int.MaxValue; if (size != 53) { string scalestr = (scale == int.MaxValue) ? "" : String.Format(CultureInfo.InvariantCulture, ",{0}", scale); _dataType = string.Format(CultureInfo.InvariantCulture, "{0}({1}{2})", _dataType, size, scalestr); } } }
internal Column(Table table, DataGridViewRow row) { _parent = row; _table = table as Table; _unique = new Unique(this); }