コード例 #1
0
 public static SqlServerIndexModelAnnotations SqlServer([NotNull] this IndexModel index)
 => new SqlServerIndexModelAnnotations(index);
コード例 #2
0
        protected override IndexBuilder VisitIndex(EntityTypeBuilder builder, IndexModel index)
        {
            var indexBuilder = base.VisitIndex(builder, index);

            if (index.IsClustered == true)
            {
                indexBuilder?.ForSqlServerIsClustered();
            }

            return indexBuilder;
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        public SqlServerIndexModelAnnotations([NotNull] IndexModel index)
        {
            Check.NotNull(index, nameof(index));

            _index = index;
        }