public override void ResolveColumnAttributes(DataRowView rv, MBColumn column) { // column.CharsetSchema = rv["CHARACTER_SET_SCHEMA"].ToString(); column.CollationCatalog = rv["COLLATION_NAME"].ToString(); if (rv["CHARACTER_MAXIMUM_LENGTH"] != DBNull.Value) { column.CharMaxLength = long.Parse(rv["CHARACTER_MAXIMUM_LENGTH"].ToString()); } //if (rv["CHARACTER_OCTET_LENGTH"] != DBNull.Value) // column.CharOctLength = // int.Parse(rv["CHARACTER_OCTET_LENGTH"].ToString()); if (rv["NUMERIC_PRECISION"] != DBNull.Value) { column.NumericPrecision = long.Parse(rv["NUMERIC_PRECISION"].ToString()); } //if (rv["NUMERIC_PRECISION_RADIX"] != DBNull.Value) // column.NumericPrecisionRadix = // int.Parse(rv["NUMERIC_PRECISION_RADIX"].ToString()); if (rv["NUMERIC_SCALE"] != DBNull.Value) { column.NumericScale = long.Parse(rv["NUMERIC_SCALE"].ToString()); } if (rv["DATETIME_PRECISION"] != DBNull.Value) { column.DateTimePrecision = long.Parse(rv["DATETIME_PRECISION"].ToString()); } if (rv["COLUMN_COMMENT"] != DBNull.Value) { column.Caption = rv["COLUMN_COMMENT"].ToString(); } if (rv["COLUMN_TYPE"] != DBNull.Value) { column.Spec = rv["COLUMN_TYPE"].ToString(); } }
public override void ResolveColumnProperties(Database db, DbSet <MBProperty> properties, MBTable table, MBColumn column) { }
public abstract void ResolveColumnProperties( Database db, DbSet <MBProperty> properties, MBTable table, MBColumn column);
public abstract void ResolveColumnAttributes(DataRowView rv, MBColumn column);
public override void ResolveColumnProperties(Database db, DbSet <MBProperty> properties, MBTable table, MBColumn column) { var cmd = db.Connection.CreateCommand(); cmd = db.Connection.CreateCommand(); cmd.CommandText = string.Format(propertyGet_Column, table.Name, column.Name); db.Connection.Open(); using (DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { if (reader.HasRows) { while (reader.Read()) { var objValue = reader.GetValue(3); var mProperty = new MBProperty() { TableId = table.TableId, Field = column.Name, Name = reader.GetString(2).ToString(), Value = objValue == null ? null : objValue.ToString() }; switch (mProperty.Name) { case "Caption": column.Caption = mProperty.Value; break; } properties.Add(mProperty); } } } }
/// <summary> /// 为目标服务器注入 ____table ____column ____property,记录表格的所有信息 /// </summary> public void Rebuild( string[] tableExcludeContains = null, string[] tableExcludePrefices = null, string[] columnExcludes = null, Func <string, bool> doneToConfirmContinue = null) { Database.ExecuteSqlCommand( string.Format("DELETE FROM {0}", TableName <MBTable>())); Database.ExecuteSqlCommand( string.Format("DELETE FROM {0}", TableName <MBColumn>())); Database.ExecuteSqlCommand( string.Format("DELETE FROM {0}", TableName <MBProperty>())); Database.Connection.Open(); DataTable meta = Database.Connection.GetSchema(); var alCollections = new ArrayList(); foreach (DataRowView rv in new DataView(meta)) { alCollections.Add(rv[0].ToString()); } var tbSchema = Database.Connection.GetSchema(SCHEMA_TABLES); var dvT = new DataView(tbSchema); var cSchema = Database.Connection.GetSchema(SCHEMA_COLUMNS); var dvC = new DataView(cSchema); Database.Connection.Close(); dvT.Sort = "TABLE_TYPE ASC, TABLE_NAME ASC"; for (int i = 0; i < dvT.Count; i++) { var name = dvT[i]["TABLE_NAME"].ToString(); if (tableExcludePrefices != null && tableExcludePrefices.Any(e => name.ToLower().StartsWith(e.ToLower()))) { continue; } if (tableExcludeContains != null && tableExcludeContains.Any(e => name.ToLower().Contains(e.ToLower()))) { continue; } var tableId = Guid.NewGuid(); var mTable = new MBTable() { TableId = tableId, Catalog = dvT[i]["TABLE_CATALOG"].ToString(), Scheme = dvT[i]["TABLE_SCHEMA"].ToString(), Name = name, Type = dvT[i]["TABLE_TYPE"].ToString() }; Tables.Add(mTable); _Resolver.ResolveTableAttributes(dvT[i], mTable); _Resolver.ResolveTablePrimaryKey(Database, Properties, mTable); _Resolver.ResolveTableProperties(Database, Properties, mTable); dvC.Sort = "TABLE_NAME ASC, COLUMN_NAME ASC"; dvC.RowFilter = string.Format( "TABLE_CATALOG = '{0}' AND TABLE_NAME = '{1}'", mTable.Catalog, mTable.Name); for (int j = 0; j < dvC.Count; j++) { var cName = dvC[j]["COLUMN_NAME"].ToString(); if (columnExcludes != null && columnExcludes.Any(e => name.ToLower().StartsWith(e.ToLower()))) { continue; } var mColumn = new MBColumn() { TableId = tableId, Name = cName, Ordinal = int.Parse(dvC[j]["ORDINAL_POSITION"].ToString()), Nullable = (dvC[j]["IS_NULLABLE"].ToString() == "YES"), Type = dvC[j]["DATA_TYPE"].ToString(), CharsetName = dvC[j]["CHARACTER_SET_NAME"].ToString() }; Columns.Add(mColumn); _Resolver.ResolveColumnAttributes(dvC[j], mColumn); _Resolver.ResolveColumnProperties(Database, Properties, mTable, mColumn); } if (doneToConfirmContinue != null) { doneToConfirmContinue(mTable.Name); } } if (doneToConfirmContinue != null) { doneToConfirmContinue("Saving changes, please wait .."); } SaveChanges(); if (doneToConfirmContinue != null) { doneToConfirmContinue("Done !"); } }