/// <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); }
/// <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>()); }
/// <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); }
/// <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); }
/// <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)); }
protected override string GetDropFKConstraintsSql(DbForeignKeyDefinition fk) { reportMethodCalled(); return string.Empty; }
protected override string GetFKConstraintsSql(DbTableDefinition dbTable, DbForeignKeyDefinition fk, ITableDefinition table) { reportMethodCalled(); return string.Empty; }
/// <summary> /// Gets the drop fk constraints SQL. /// </summary> /// <param name="fk">The fk.</param> /// <returns>System.String.</returns> protected abstract string GetDropFKConstraintsSql(DbForeignKeyDefinition fk);
/// <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);
/// <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(); }