示例#1
0
        public void should_add_table_indexes()
        {
            var tableName = "Temp" + Guid.NewGuid().ToString("N");

            GribbleDatabase.CreateTable(tableName,
                                        new Column("Id", typeof(int), isIdentity: true, key: Column.KeyType.ClusteredPrimaryKey),
                                        new Column("Created", typeof(DateTime), isNullable: false, isAutoGenerated: true));
            GribbleDatabase.AddNonClusteredIndex(tableName, new Index.Column("Id"), new Index.Column("Created"));
            GribbleDatabase.AddNonClusteredIndexes(tableName, new Index.ColumnSet {
                "Id", "Created"
            }, new Index.ColumnSet {
                "Created"
            });

            var indexes = GribbleDatabase.GetIndexes(tableName).ToList();

            indexes.Count.ShouldEqual(3);

            var index = indexes[2];

            index.Clustered.ShouldBeTrue();
            index.Columns.Count().ShouldEqual(1);
            index.Columns.First().Name.ShouldEqual("Id");
            index.Columns.First().Descending.ShouldBeFalse();
            index.Name.ShouldStartWith("PK_");
            index.Name.ShouldContain("_Id");
            index.PrimaryKey.ShouldBeTrue();
            index.Unique.ShouldBeTrue();

            index = indexes[1];
            index.Clustered.ShouldBeFalse();
            index.Columns.Count().ShouldEqual(2);
            index.Columns.First().Name.ShouldEqual("Id");
            index.Columns.First().Descending.ShouldBeFalse();
            index.Columns.Last().Name.ShouldEqual("Created");
            index.Columns.Last().Descending.ShouldBeFalse();
            index.Name.ShouldStartWith("IX_");
            index.Name.ShouldContain("_Id_Created");
            index.PrimaryKey.ShouldBeFalse();
            index.Unique.ShouldBeFalse();

            index = indexes[0];
            index.Clustered.ShouldBeFalse();
            index.Columns.Count().ShouldEqual(1);
            index.Columns.First().Name.ShouldEqual("Created");
            index.Columns.First().Descending.ShouldBeFalse();
            index.Name.ShouldStartWith("IX_");
            index.Name.ShouldContain("_Created");
            index.PrimaryKey.ShouldBeFalse();
            index.Unique.ShouldBeFalse();
        }