예제 #1
0
		public ExtendedProperty[] GetExtendedProperties(string connectionString, SchemaObjectBase schemaObject)
		{
			List<ExtendedProperty> list = new List<ExtendedProperty>();
			return list.ToArray();
		}
예제 #2
0
		public void SetExtendedProperties(string connectionString, SchemaObjectBase schemaObject)
		{
			throw new NotImplementedException("This method has not been implemented");
		}
예제 #3
0
		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;
		}