Esempio n. 1
0
        public async Task CreateRowDefaultTest()
        {
            // Setup:
            // ... We will have 3 columns
            DbColumnWrapper[] cols =
            {
                new DbColumnWrapper(new TestDbColumn("col1")),    // No default
                new DbColumnWrapper(new TestDbColumn("col2")),    // Has default (defined below)
                new DbColumnWrapper(new TestDbColumn("filler"))   // Filler column so we can use the common code
            };

            // ... Metadata provider will return 3 columns
            EditColumnMetadata[] metas =
            {
                new EditColumnMetadata                   // No default
                {
                    DefaultValue = null,
                    EscapedName  = cols[0].ColumnName
                },
                new EditColumnMetadata                   // Has default
                {
                    DefaultValue = "default",
                    EscapedName  = cols[1].ColumnName
                },
                new EditColumnMetadata
                {
                    EscapedName = cols[2].ColumnName
                }
            };
            var etm = new EditTableMetadata
            {
                Columns = metas,
                EscapedMultipartName = "tbl",
                IsMemoryOptimized    = false
            };

            etm.Extend(cols);

            // ... Create a result set
            var q = await Common.GetQuery(cols.Cast <DbColumn>().ToArray(), false);

            // ... Create a session from all this
            EditSession s = await Common.GetCustomSession(q, etm);

            // If: I add a row to the session, on a table that has defaults
            var result = s.CreateRow();

            // Then:
            // ... Result should not be null, new row ID should be > 0
            Assert.NotNull(result);
            Assert.True(result.NewRowId > 0);

            // ... There should be 3 default values (3 columns)
            Assert.NotEmpty(result.DefaultValues);
            Assert.Equal(3, result.DefaultValues.Length);

            // ... There should be specific values for each kind of default
            Assert.Null(result.DefaultValues[0]);
            Assert.Equal("default", result.DefaultValues[1]);
        }
        public static EditTableMetadata GetCustomEditTableMetadata(DbColumn[] columns)
        {
            // Create column metadata providers and column wrappers
            var columnMetas    = new List <EditColumnMetadata>();
            var columnWrappers = new List <DbColumnWrapper>();

            for (int i = 0; i < columns.Length; i++)
            {
                columnMetas.Add(new EditColumnMetadata
                {
                    EscapedName = columns[i].ColumnName,
                    Ordinal     = i
                });
                columnWrappers.Add(new DbColumnWrapper(columns[i]));
            }

            // Create the table metadata
            EditTableMetadata editTableMetadata = new EditTableMetadata
            {
                Columns = columnMetas.ToArray(),
                EscapedMultipartName = TableName,
                IsMemoryOptimized    = false
            };

            editTableMetadata.Extend(columnWrappers.ToArray());
            return(editTableMetadata);
        }
Esempio n. 3
0
        public static EditTableMetadata GetStandardMetadata(DbColumn[] columns, bool isMemoryOptimized = false)
        {
            // Create column metadata providers
            var columnMetas = columns.Select((c, i) =>
            {
                var ecm = new EditColumnMetadata
                {
                    EscapedName = c.ColumnName,
                    Ordinal     = i
                };
                return(ecm);
            }).ToArray();

            // Create column wrappers
            var columnWrappers = columns.Select(c => new DbColumnWrapper(c)).ToArray();

            // Create the table metadata
            EditTableMetadata editTableMetadata = new EditTableMetadata
            {
                Columns = columnMetas,
                EscapedMultipartName = "tbl",
                IsMemoryOptimized    = isMemoryOptimized
            };

            editTableMetadata.Extend(columnWrappers);
            return(editTableMetadata);
        }
            public TestDbColumnsWithTableMetadata(bool isMemoryOptimized, bool identityCol, int defaultCols, int nullableCols)
            {
                List <DbColumn>           dbColumns       = new List <DbColumn>();
                List <DbColumnWrapper>    columnWrappers  = new List <DbColumnWrapper>();
                List <EditColumnMetadata> columnMetadatas = new List <EditColumnMetadata>();

                int startingOrdinal = 0;

                // Add the identity column at the front of the table
                if (identityCol)
                {
                    const string colName = "id";

                    DbColumn dbColumn = new TestDbColumn(colName)
                    {
                        IsKey           = true,
                        IsIdentity      = true,
                        IsAutoIncrement = true
                    };
                    EditColumnMetadata columnMetadata = new EditColumnMetadata
                    {
                        EscapedName  = colName,
                        Ordinal      = startingOrdinal,
                        DefaultValue = null
                    };
                    dbColumns.Add(dbColumn);
                    columnWrappers.Add(new DbColumnWrapper(dbColumn));
                    columnMetadatas.Add(columnMetadata);

                    startingOrdinal++;
                }

                // Add each column to the table
                for (int i = startingOrdinal; i < 3 + startingOrdinal; i++)
                {
                    string             colName = $"col{i}";
                    DbColumn           dbColumn;
                    EditColumnMetadata columnMetadata;

                    if (i < defaultCols + startingOrdinal)
                    {
                        // This column will have a default value
                        dbColumn = new TestDbColumn(colName)
                        {
                            AllowDBNull = false
                        };
                        columnMetadata = new EditColumnMetadata
                        {
                            EscapedName  = colName,
                            Ordinal      = i,
                            DefaultValue = DefaultValue
                        };
                    }
                    else if (i < nullableCols + defaultCols + startingOrdinal)
                    {
                        // This column will be nullable
                        dbColumn = new TestDbColumn(colName)
                        {
                            AllowDBNull = true
                        };
                        columnMetadata = new EditColumnMetadata
                        {
                            EscapedName  = colName,
                            Ordinal      = i,
                            DefaultValue = null
                        };
                    }
                    else
                    {
                        // This column doesn't have a default value or is nullable
                        dbColumn = new TestDbColumn(colName)
                        {
                            AllowDBNull = false
                        };
                        columnMetadata = new EditColumnMetadata
                        {
                            EscapedName  = colName,
                            Ordinal      = i,
                            DefaultValue = null
                        };
                    }
                    dbColumns.Add(dbColumn);
                    columnWrappers.Add(new DbColumnWrapper(dbColumn));
                    columnMetadatas.Add(columnMetadata);
                }

                // Put together the table metadata
                EditTableMetadata editTableMetadata = new EditTableMetadata
                {
                    Columns = columnMetadatas.ToArray(),
                    EscapedMultipartName = TableName,
                    IsMemoryOptimized    = isMemoryOptimized
                };

                editTableMetadata.Extend(columnWrappers.ToArray());

                DbColumns     = dbColumns.ToArray();
                TableMetadata = editTableMetadata;
            }