public ExtendedProperty[] GetExtendedProperties(string connectionString, SchemaObjectBase schemaObject) { List<ExtendedProperty> list = new List<ExtendedProperty>(); return list.ToArray(); }
public void SetExtendedProperties(string connectionString, SchemaObjectBase schemaObject) { throw new NotImplementedException("This method has not been implemented"); }
private List<TableKeySchema> GetOthersTableKeys(string connectionString, SchemaObjectBase table) { string commandText = string.Format("SELECT distinct t1.CONSTRAINT_NAME\r\nFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE t1 \r\nINNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t2 ON t2.TABLE_CATALOG = t1.TABLE_CATALOG \r\nAND t2.TABLE_NAME = t1.TABLE_NAME AND t2.CONSTRAINT_NAME = t1.CONSTRAINT_NAME \r\nINNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS t3\r\nON t1.CONSTRAINT_NAME=t3.CONSTRAINT_NAME\r\nINNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE T4 \r\nON T3.UNIQUE_CONSTRAINT_NAME=T4.CONSTRAINT_NAME\r\nWHERE t1.TABLE_CATALOG = '{0}' AND t4.TABLE_NAME = '{1}' \r\nAND t2.CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY t1.CONSTRAINT_NAME", table.Database.Name, table.Name); string commandText2 = string.Format("SELECT t1.CONSTRAINT_NAME,t1.Table_Name, t1.COLUMN_NAME, t4.ORDINAL_POSITION, t4.TABLE_NAME AS REFERENCED_TABLE_NAME, T4.COLUMN_NAME AS REFERENCED_COLUMN_NAME\r\nFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE t1 \r\nINNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t2 ON t2.TABLE_CATALOG = t1.TABLE_CATALOG \r\nAND t2.TABLE_NAME = t1.TABLE_NAME AND t2.CONSTRAINT_NAME = t1.CONSTRAINT_NAME \r\nINNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS t3\r\nON t1.CONSTRAINT_NAME=t3.CONSTRAINT_NAME\r\nINNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE T4 \r\nON T3.UNIQUE_CONSTRAINT_NAME=T4.CONSTRAINT_NAME\r\nWHERE t1.TABLE_CATALOG = '{0}' AND t4.TABLE_NAME = '{1}' \r\nAND t2.CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY t1.CONSTRAINT_NAME", table.Database.Name, table.Name); DataSet dataSet; using (DbConnection dbConnection = MsSqlSchemaProvider.CreateConnection(connectionString)) { dbConnection.Open(); using (DbCommand dbCommand = dbConnection.CreateCommand()) { dbCommand.CommandText = commandText; dbCommand.Connection = dbConnection; dataSet = this.ConvertDataReaderToDataSet(dbCommand.ExecuteReader()); } if (dbConnection.State != ConnectionState.Closed) { dbConnection.Close(); } } using (DbConnection dbConnection2 = MsSqlSchemaProvider.CreateConnection(connectionString)) { dbConnection2.Open(); using (DbCommand dbCommand2 = dbConnection2.CreateCommand()) { dbCommand2.CommandText = commandText2; dbCommand2.Connection = dbConnection2; dataSet.Tables.Add(this.ConvertDataReaderToDataTable(dbCommand2.ExecuteReader())); } if (dbConnection2.State != ConnectionState.Closed) { dbConnection2.Close(); } } List<TableKeySchema> list = new List<TableKeySchema>(); if (dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0) { dataSet.Relations.Add("Contraint_to_Keys", dataSet.Tables[0].Columns["CONSTRAINT_NAME"], dataSet.Tables[1].Columns["CONSTRAINT_NAME"]); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { string name = dataRow["CONSTRAINT_NAME"].ToString(); List<DataRow> list2 = new List<DataRow>(dataRow.GetChildRows("Contraint_to_Keys")); List<string> list3 = new List<string>(list2.Count); List<string> list4 = new List<string>(list2.Count); string foreignKeyTable = list2[0]["TABLE_NAME"].ToString(); string primaryKeyTable = list2[0]["REFERENCED_TABLE_NAME"].ToString(); foreach (DataRow current in list2) { list4.Add(current["COLUMN_NAME"].ToString()); list3.Add(current["REFERENCED_COLUMN_NAME"].ToString()); } list.Add(new TableKeySchema(table.Database, name, list4.ToArray(), foreignKeyTable, list3.ToArray(), primaryKeyTable)); } } List<TableKeySchema> result; if (list.Count > 0) { result = list; } else { result = new List<TableKeySchema>(); } return result; }