protected internal TableInfo Build(ISchemaProvider schemaProvider)
        {
            List <Column>      cols = new List <Column>();
            List <PostProcess> post = new List <PostProcess>();

            foreach (ColumnBuilder columnBuilder in _columns)
            {
                Column col = columnBuilder.Build(this, schemaProvider, post);

                if (col.IsPrimaryKey)
                {
                    _pkColumn = columnBuilder;
                }

                cols.Add(col);
            }

            schemaProvider.AddTable(_name, cols.ToArray());

            foreach (PostProcess process in post)
            {
                process.Action();
            }

            return(new TableInfo(_name, _pkColumn.Name, _pkColumn.ColumnType, _pkColumn.Size));
        }
        public IColumnBuilder AddPrimaryKey <T>(string columnName)
        {
            if (_pkColumn != null)
            {
                throw new InvalidOperationException("You can only add one primary key");
            }

            var builder = new PrimaryKeyBuilder(columnName, typeof(T));

            _columns.Add(builder);
            _pkColumn = builder;

            return(builder);
        }