コード例 #1
0
        /// <summary>
        /// Gets the drop fk constraints SQL.
        /// </summary>
        /// <param name="fk">The fk.</param>
        /// <returns>System.String.</returns>
        protected override string GetDropFKConstraintsSql(DbForeignKeyDefinition fk)
        {
            return string.Format(@"
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
            WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'
            AND TABLE_NAME = N'{0}'
            AND CONSTRAINT_NAME = N'{1}')
    ALTER TABLE [{0}] DROP CONSTRAINT {1}", fk.ForeignKeyTableName, fk.ConstraintName);
        }
コード例 #2
0
ファイル: DbTableDefinition.cs プロジェクト: mparsin/Elements
 /// <summary>
 /// Creates table definition instance.
 /// </summary>
 /// <param name="tableName">Table name.</param>
 /// <param name="columns">Columns.</param>
 /// <param name="foreignKeys">Foreign keys.</param>
 /// <returns>Returns created table definition.</returns>
 public static DbTableDefinition Create(string tableName, DbColumnDefinition[] columns, DbForeignKeyDefinition[] foreignKeys)
 {
     return Create(tableName, columns, foreignKeys, Enumerable.Empty<DbTriggerDefinition>());
 }
コード例 #3
0
        /// <summary>
        /// Gets the fk constraints SQL.
        /// </summary>
        /// <param name="dbTable">The database table.</param>
        /// <param name="fk">The fk.</param>
        /// <param name="table">The table.</param>
        /// <returns>System.String.</returns>
        protected override string GetFKConstraintsSql(DbTableDefinition dbTable, DbForeignKeyDefinition fk, ITableDefinition table)
        {
            var fKeys = string.Join(",", fk.ForeignKeyColumnsName);
            var pKeys = string.Join(",", fk.PrimaryKeyColumnsName);

            return string.Format(
                @"
IF (EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_SCHEMA] = 'dbo' AND [TABLE_NAME] = N'{0}'))
BEGIN
ALTER TABLE [{0}] WITH CHECK ADD CONSTRAINT [{1}] FOREIGN KEY([{2}])
REFERENCES [{3}] ({4})

ALTER TABLE [{0}] CHECK CONSTRAINT [{1}]

END
",
                fk.ForeignKeyTableName,
                fk.ConstraintName,
                fKeys,
                fk.PrimaryKeyTableName,
                pKeys);
        }
コード例 #4
0
        /// <summary>
        /// Gets the fk constraints SQL.
        /// </summary>
        /// <param name="dbTable">The database table.</param>
        /// <param name="fk">The fk.</param>
        /// <param name="table">The table.</param>
        /// <returns>System.String.</returns>
        protected override string GetFKConstraintsSql(DbTableDefinition dbTable, DbForeignKeyDefinition fk, ITableDefinition table)
        {
            var fKeys = string.Join(",", from c in fk.ForeignKeyColumnsName select "\"" + OracleNamesTranslator.Translate(c) + "\"");
            var pKeys = string.Join(",", from c in fk.PrimaryKeyColumnsName select "\"" + OracleNamesTranslator.Translate(c) + "\"");

            return string.Format(
                @"ALTER TABLE ""{0}"" ADD CONSTRAINT ""{1}"" FOREIGN KEY({2}) REFERENCES ""{3}""({4});;",
                OracleNamesTranslator.Translate(fk.ForeignKeyTableName),
                OracleNamesTranslator.Translate(fk.ConstraintName),
                fKeys,
                OracleNamesTranslator.Translate(fk.PrimaryKeyTableName),
                pKeys);
        }
コード例 #5
0
        /// <summary>
        /// Gets the drop fk constraints SQL.
        /// </summary>
        /// <param name="fk">The fk.</param>
        /// <returns>System.String.</returns>
        protected override string GetDropFKConstraintsSql(DbForeignKeyDefinition fk)
        {
            return string.Format(@"BEGIN
   FOR cc IN (SELECT constraint_name as constraint_exists
    FROM user_constraints
    WHERE constraint_name = '{1}') LOOP
      EXECUTE IMMEDIATE 'ALTER TABLE ""{0}"" DROP CONSTRAINT ""{1}""';
   END LOOP;
END; ;;", OracleNamesTranslator.Translate(fk.ForeignKeyTableName), OracleNamesTranslator.Translate(fk.ConstraintName));
        }
コード例 #6
0
 protected override string GetDropFKConstraintsSql(DbForeignKeyDefinition fk)
 {
     reportMethodCalled();
     return string.Empty;
 }
コード例 #7
0
 protected override string GetFKConstraintsSql(DbTableDefinition dbTable, DbForeignKeyDefinition fk, ITableDefinition table)
 {
     reportMethodCalled();
     return string.Empty;
 }
コード例 #8
0
 /// <summary>
 /// Gets the drop fk constraints SQL.
 /// </summary>
 /// <param name="fk">The fk.</param>
 /// <returns>System.String.</returns>
 protected abstract string GetDropFKConstraintsSql(DbForeignKeyDefinition fk);
コード例 #9
0
 /// <summary>
 /// Gets the fk constraints SQL.
 /// </summary>
 /// <param name="dbTable">The database table.</param>
 /// <param name="fk">The fk.</param>
 /// <param name="table">The table.</param>
 /// <returns>System.String.</returns>
 protected abstract string GetFKConstraintsSql(DbTableDefinition dbTable,
                                               DbForeignKeyDefinition fk,
                                               ITableDefinition table);
コード例 #10
0
        /// <summary>
        /// Compares the foreign key definitions.
        /// </summary>
        /// <param name="a1">The a1.</param>
        /// <param name="a2">The a2.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static bool CompareForeignKeyDefinitions(DbForeignKeyDefinition[] a1, DbForeignKeyDefinition[] a2)
        {
            if (a1 == null || a2 == null)
                return false;

            if (a1.Length != a2.Length)
                return false;

            return
                !a1.Where(
                    (t, i) =>
                    t.ConstraintName != a2[i].ConstraintName || t.ForeignKeyColumnsName != a2[i].ForeignKeyColumnsName || t.ForeignKeyTableName != a2[i].ForeignKeyTableName ||
                    t.PrimaryKeyColumnsName != a2[i].PrimaryKeyColumnsName || t.PrimaryKeyTableName != a2[i].PrimaryKeyTableName)
                   .Any();
        }