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

            GribbleDatabase.CreateTable(tableName,
                                        new Column("Id", typeof(int), isIdentity: true, key: Column.KeyType.ClusteredPrimaryKey),
                                        new Column("Uid", typeof(Guid), isAutoGenerated: true),
                                        new Column("Created", typeof(DateTime), isAutoGenerated: true));

            GribbleDatabase.AddColumns(tableName,
                                       new Column("Uid", typeof(Guid), isAutoGenerated: true),
                                       new Column("Name", typeof(string), isNullable: true, length: 500));

            var columns = GribbleDatabase.GetColumns(tableName).ToList();

            columns.Count.ShouldEqual(4);
            var column = columns[0];

            column.Computation.ShouldBeNull();
            column.ComputationPersisted.ShouldBeNull();
            column.DefaultValue.ShouldBeNull();
            column.IsAutoGenerated.ShouldBeFalse();
            column.IsComputed.ShouldBeFalse();
            column.IsIdentity.ShouldBeTrue();
            column.IsNullable.ShouldBeFalse();
            column.Key.ShouldEqual(Column.KeyType.ClusteredPrimaryKey);
            column.Length.ShouldEqual((short)4);
            column.Name.ShouldEqual("Id");
            column.Precision.ShouldEqual((byte)10);
            column.Scale.ShouldEqual((byte)0);
            column.SqlType.ShouldEqual(SqlDbType.Int);
            column.Type.ShouldEqual(typeof(int));

            column = columns[1];
            column.Computation.ShouldBeNull();
            column.ComputationPersisted.ShouldBeNull();
            column.DefaultValue.ShouldBeNull();
            column.IsAutoGenerated.ShouldBeTrue();
            column.IsComputed.ShouldBeFalse();
            column.IsIdentity.ShouldBeFalse();
            column.IsNullable.ShouldBeFalse();
            column.Key.ShouldEqual(Column.KeyType.None);
            column.Length.ShouldEqual((short)16);
            column.Name.ShouldEqual("Uid");
            column.Precision.ShouldEqual((byte)0);
            column.Scale.ShouldEqual((byte)0);
            column.SqlType.ShouldEqual(SqlDbType.UniqueIdentifier);
            column.Type.ShouldEqual(typeof(Guid));

            column = columns[2];
            column.DefaultValue.ShouldBeNull();
            column.IsAutoGenerated.ShouldBeTrue();
            column.DefaultValue.ShouldBeNull();
            column.IsAutoGenerated.ShouldBeTrue();
            column.IsComputed.ShouldBeFalse();
            column.IsIdentity.ShouldBeFalse();
            column.IsNullable.ShouldBeFalse();
            column.Key.ShouldEqual(Column.KeyType.None);
            column.Length.ShouldEqual((short)8);
            column.Name.ShouldEqual("Created");
            column.Precision.ShouldEqual((byte)23);
            column.Scale.ShouldEqual((byte)3);
            column.SqlType.ShouldEqual(SqlDbType.DateTime);
            column.Type.ShouldEqual(typeof(DateTime));

            column = columns[3];
            column.Computation.ShouldBeNull();
            column.ComputationPersisted.ShouldBeNull();
            column.DefaultValue.ShouldBeNull();
            column.IsAutoGenerated.ShouldBeFalse();
            column.IsComputed.ShouldBeFalse();
            column.IsIdentity.ShouldBeFalse();
            column.IsNullable.ShouldBeTrue();
            column.Key.ShouldEqual(Column.KeyType.None);
            column.Length.ShouldEqual((short)500);
            column.Name.ShouldEqual("Name");
            column.Precision.ShouldEqual((byte)0);
            column.Scale.ShouldEqual((byte)0);
            column.SqlType.ShouldEqual(SqlDbType.NVarChar);
            column.Type.ShouldEqual(typeof(string));
        }