Example #1
0
        public override CreateTableStatementBuilder GetCreateTableStatementBuilder()
        {
            CreateTableStatementBuilder cts = base.GetCreateTableStatementBuilder();

            cts.Columns.Add(new ColumnInfo(_columnName, typeof(bool), null));
            return(cts);
        }
Example #2
0
        public void CreateCrossTable(Type t2)
        {
            var ctx2 = ModelContext.GetInstance(t2).Info;

            if (!(Info.CrossTables.ContainsKey(t2) && ctx2.CrossTables.ContainsKey(Info.HandleType)))
            {
                throw new DataException("They are not many to many relationship classes!");
            }
            if (Info.KeyMembers.Length <= 0 || ctx2.KeyMembers.Length <= 0)
            {
                throw new DataException("The relation table must have key column!");
            }
            var mt  = Info.CrossTables[t2];
            var cs  = mt.GetSortedColumns();
            var cts = new CreateTableStatementBuilder(mt.Name);

            cts.Columns.Add(new ColumnInfo(cs[0].Column, Info.KeyMembers[0].MemberType, cs[0].Table));
            cts.Columns.Add(new ColumnInfo(cs[1].Column, Info.KeyMembers[0].MemberType, cs[1].Table));
            // add index
            cts.Indexes.Add(new DbIndex(null, false, (ASC)cs[0].Column));
            cts.Indexes.Add(new DbIndex(null, false, (ASC)cs[1].Column));
            // execute
            var sql = cts.ToSqlStatement(Provider.Dialect, null, Info.AllowSqlLog);

            Provider.ExecuteNonQuery(sql);
            Fixer.SetAsProcessed();
        }
Example #3
0
        private IEnumerable <CreateTableStatement> GetCreateTableStatements()
        {
            foreach (var entityMapping in _model.EntityMappings)
            {
                var tableStatementBuilder = new CreateTableStatementBuilder(_model, entityMapping);

                yield return(tableStatementBuilder.BuildStatement());
            }
        }
        public static void CreateTable(this IQuery query, Action <ICreateTableStatementBuilder> createTable)
        {
            var builder = new CreateTableStatementBuilder();

            createTable(builder);

            var statements = builder.Build();

            foreach (var statement in statements)
            {
                Result(query.ExecuteStatement(statement));
            }
        }
Example #5
0
        public virtual CreateTableStatementBuilder GetCreateTableStatementBuilder()
        {
            var builder = new CreateTableStatementBuilder(this.Context.Info.From.MainTableName);

            foreach (MemberHandler member in this.Context.Info.Members)
            {
                if ((!member.Is.HasMany && !member.Is.HasOne) && !member.Is.HasAndBelongsToMany)
                {
                    var item = new ColumnInfo(member);
                    builder.Columns.Add(item);
                }
            }
            foreach (string key in this.Context.Info.Indexes.Keys)
            {
                bool unique = this.Context.Info.UniqueIndexes.ContainsKey(key);
                builder.Indexes.Add(new DbIndex(key, unique, this.Context.Info.Indexes[key].ToArray()));
            }
            return(builder);
        }
Example #6
0
        public IRelationalCommand Build <TEntity>(SqlStatementKind statementKind, IEntityModel model, TEntity entity, IEntityMapping entityMapping)
        {
            switch (statementKind)
            {
            case SqlStatementKind.CreateTable:

                ISqlStatementBuilder <CreateTableStatement> statementBuilder = new CreateTableStatementBuilder(model, entityMapping);

                ISqlStatement statement = statementBuilder.BuildStatement();

                return(new RelationalCommand(statement.GetText(), null));

            case SqlStatementKind.Insert:

                ISqlStatementBuilder <InsertStatement> insertStatementBuilder = new InsertStatementBuilder(entity, entityMapping);
                InsertStatement insertStatement = insertStatementBuilder.BuildStatement();

                return(new RelationalCommand(insertStatement.GetText(), insertStatement.Parameters));

            case SqlStatementKind.Update:

                ISqlStatementBuilder <UpdateStatement> updateStatementBuilder = new UpdateStatementBuilder(entity, entityMapping);
                UpdateStatement updateStatement = updateStatementBuilder.BuildStatement();

                return(new RelationalCommand(updateStatement.GetText(), updateStatement.Parameters));

            case SqlStatementKind.Delete:

                ISqlStatementBuilder <DeleteStatement> deleteStatementBuilder = new DeleteStatementBuilder(entity, entityMapping);
                DeleteStatement deleteStatement = deleteStatementBuilder.BuildStatement();

                return(new RelationalCommand(deleteStatement.GetText(), deleteStatement.Parameters));

            default:

                throw new NotImplementedException();
            }
        }