/// <summary> /// Deserialises the version history from the specified xml element. /// </summary> internal static void Deserialise(DomainTable table, XmlNode parentNode) { foreach (XmlNode xmlNode in parentNode.SelectNodes("index")) { DomainTableIndex result = table.CreateIndex(); result.Deserialise(xmlNode); DomainTableIndexColumn.Deserialise(result, xmlNode); } }
/// <summary> /// Parses a data record into a <see cref="DatabaseIndex" /> instance. /// </summary> private DomainTableIndex ParseIndex(DomainTable table, IDataRecord record) { DomainTableIndex index = table.CreateIndex(); index.IndexName = record["index_name"].ConvertTo <String>(); index.IndexIsUnique = record["index_unique"].ConvertTo <Boolean>(); // Import the column information this.Execute(rec2 => this.ParseIndexColumn(index, rec2), @" select columns.name from sys.schemas join sys.objects on objects.schema_id = schemas.schema_id join sys.columns on columns.object_id = objects.object_id join sys.indexes on indexes.object_id = objects.object_id join sys.index_columns on index_columns.object_id = objects.object_id and index_columns.index_id = indexes.index_id and index_columns.column_id = columns.column_id where schemas.name = 'dbo' and objects.type = 'u' and objects.name = @param1 and indexes.index_id = @param2 order by indexes.type, indexes.index_id", table.TableName, record["index_id"]).ToArray(); return(index); }