コード例 #1
0
        protected virtual string GetAddColumnString(Column column, MappingContext mappingContext,
                                                    SpringBaseDao baseDao, List <string> primaryKeyCommands,
                                                    List <String> postCommands, List <Column> descriptionColumns,
                                                    List <string> dbNames)
        {
            string rtnVal = string.Format("\"{0}\" {1}{2}",
                                          column.ColumnName,
                                          GetColumnSqlDataTypeCreateString(mappingContext, column, baseDao),
                                          column.IsNullable ? string.Empty : " NOT NULL");

            if (column.IsPrimaryKey)
            {
                PrimaryKeyColumn primaryKeyColumn = (PrimaryKeyColumn)column;
                string           pkName           = Utils.GetPrimaryKeyConstraintName(primaryKeyColumn, mappingContext.ShortenNamesByRemovingVowelsFirst,
                                                                                      mappingContext.FixShortenNameBreakBug, mappingContext.DefaultTableNamePrefix);
                pkName = CheckDatabaseNameDoesNotExist(pkName, dbNames);
                string cmd = string.Format("ALTER TABLE {0} ADD CONSTRAINT {1} PRIMARY KEY ({2})",
                                           primaryKeyColumn.Table.TableName, pkName, primaryKeyColumn.ColumnName);
                primaryKeyCommands.Add(cmd);
            }
            else if (column.IsForeignKey)
            {
                ForeignKeyColumn foreignKeyColumn = (ForeignKeyColumn)column;
                string           fkName           = Utils.GetForeignKeyConstraintName(foreignKeyColumn, mappingContext.ShortenNamesByRemovingVowelsFirst,
                                                                                      mappingContext.FixShortenNameBreakBug, mappingContext.DefaultTableNamePrefix);
                fkName = CheckDatabaseNameDoesNotExist(fkName, dbNames);
                string cmd = string.Format("ALTER TABLE {0} ADD CONSTRAINT {1} FOREIGN KEY ({2}) REFERENCES {3}({4})",
                                           foreignKeyColumn.Table.TableName, fkName, foreignKeyColumn.ColumnName,
                                           foreignKeyColumn.ForeignTable.TableName, foreignKeyColumn.ForeignTable.PrimaryKey.ColumnName);
                if (foreignKeyColumn.DeleteRule != DeleteRule.None)
                {
                    cmd += (foreignKeyColumn.DeleteRule == DeleteRule.Cascade) ? " ON DELETE CASCADE" : " ON DELETE SET NULL";
                }

                postCommands.Add(cmd);
                string indexName = Utils.GetIndexName(foreignKeyColumn, mappingContext.ShortenNamesByRemovingVowelsFirst,
                                                      mappingContext.FixShortenNameBreakBug, mappingContext.DefaultTableNamePrefix);
                indexName = CheckDatabaseNameDoesNotExist(indexName, dbNames);
                cmd       = string.Format("CREATE INDEX {0} ON {1}({2})", indexName,
                                          foreignKeyColumn.Table.TableName, foreignKeyColumn.ColumnName);
                postCommands.Add(cmd);
            }
            else if (column.IsIndexable)
            {
                string indexName = Utils.GetIndexName(column, mappingContext.ShortenNamesByRemovingVowelsFirst,
                                                      mappingContext.FixShortenNameBreakBug, mappingContext.DefaultTableNamePrefix);
                indexName = CheckDatabaseNameDoesNotExist(indexName, dbNames);
                string cmd = string.Format("CREATE INDEX {0} ON {1}({2})", indexName, column.Table.TableName, column.ColumnName);
                postCommands.Add(cmd);
            }
            if (!string.IsNullOrEmpty(column.ColumnDescription))
            {
                descriptionColumns.Add(column);
            }
            return(rtnVal);
        }
コード例 #2
0
ファイル: Utils.cs プロジェクト: hkbadeq/opennode2-dotnet
 public static string GetPrimaryKeyConstraintName(PrimaryKeyColumn primaryKeyColumn, bool shortenNamesByRemovingVowelsFirst,
                                                  bool fixBreakBug, string defaultTableNamePrefix)
 {
     if (!string.IsNullOrEmpty(primaryKeyColumn.IndexName))
     {
         return(primaryKeyColumn.IndexName);
     }
     else
     {
         return(ShortenDatabaseName("PK" + Utils.NAME_SEPARATOR + RemoveTableNamePrefix(primaryKeyColumn.Table.TableName, primaryKeyColumn.Table.TableNamePrefix, defaultTableNamePrefix),
                                    MAX_CONSTRAINT_NAME_CHARS, shortenNamesByRemovingVowelsFirst, fixBreakBug, null));
     }
 }