public static SqlServerIndexModelAnnotations SqlServer([NotNull] this IndexModel index) => new SqlServerIndexModelAnnotations(index);
protected override IndexBuilder VisitIndex(EntityTypeBuilder builder, IndexModel index) { var indexBuilder = base.VisitIndex(builder, index); if (index.IsClustered == true) { indexBuilder?.ForSqlServerIsClustered(); } return indexBuilder; }
private void GetIndexes() { var command = _connection.CreateCommand(); command.CommandText = @"SELECT i.name AS [index_name], object_schema_name(i.object_id) AS [schema_name], object_name(i.object_id) AS [table_name], i.is_unique, c.name AS [column_name], i.type_desc FROM sys.indexes i inner join sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id inner join sys.columns c ON ic.object_id = c.object_id AND c.column_id = ic.column_id WHERE object_schema_name(i.object_id) <> 'sys' AND i.is_primary_key <> 1 AND object_name(i.object_id) <> '" + HistoryRepository.DefaultTableName + @"' ORDER BY i.name, ic.key_ordinal"; using (var reader = command.ExecuteReader()) { IndexModel index = null; while (reader.Read()) { var indexName = reader.GetString(0); var schemaName = reader.GetString(1); var tableName = reader.GetString(2); if (!_tableSelectionSet.Allows(schemaName, tableName)) { continue; } if (index == null || index.Name != indexName) { TableModel table; if(!_tables.TryGetValue(TableKey(tableName, schemaName), out table)) { continue; } index = new IndexModel { Table = table, Name = indexName, IsUnique = reader.GetBoolean(3), IsClustered = (reader.GetString(5) == "CLUSTERED") ? true : default(bool?) }; table.Indexes.Add(index); } var columnName = reader.GetString(4); var column = _tableColumns[ColumnKey(index.Table, columnName)]; index.Columns.Add(column); } } }
public SqlServerIndexModelAnnotations([NotNull] IndexModel index) { Check.NotNull(index, nameof(index)); _index = index; }