public static ITransformationProvider AddManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string lhsKey, string rhsTableName, string rhsKey, string joiningTableName)
		{
			string joiningTableWithSchema = TransformationProviderUtility.FormatTableName(schema, joiningTableName);

			string joinLhsKey = Inflector.Singularize(lhsTableName) + "Id";
			string joinRhsKey = Inflector.Singularize(rhsTableName) + "Id";

			database.AddTable(joiningTableWithSchema,
												new Column(joinLhsKey, DbType.Guid, ColumnProperty.NotNull),
												new Column(joinRhsKey, DbType.Guid, ColumnProperty.NotNull));

			string pkName = "PK_" + joiningTableName;

			pkName = ShortenKeyNameToBeSuitableForOracle(pkName);

			database.AddPrimaryKey(pkName, joiningTableWithSchema, joinLhsKey, joinRhsKey);

			string lhsTableNameWithSchema = TransformationProviderUtility.FormatTableName(schema, lhsTableName);
			string rhsTableNameWithSchema = TransformationProviderUtility.FormatTableName(schema, rhsTableName);

			string lhsFkName = TransformationProviderUtility.CreateForeignKeyName(lhsTableName, joiningTableName);
			database.AddForeignKey(lhsFkName, joiningTableWithSchema, joinLhsKey, lhsTableNameWithSchema, lhsKey, ForeignKeyConstraint.NoAction);

			string rhsFkName = TransformationProviderUtility.CreateForeignKeyName(rhsTableName, joiningTableName);
			database.AddForeignKey(rhsFkName, joiningTableWithSchema, joinRhsKey, rhsTableNameWithSchema, rhsKey, ForeignKeyConstraint.NoAction);

			return database;
		}
コード例 #2
0
 public static void AddForeignKey(this ITransformationProvider migration, string foreignTable, string foreignColumn, string primaryTable, string primaryColumn)
 {
     migration.AddForeignKey(migration.ForeignKeyName(foreignTable, foreignColumn, primaryTable, primaryColumn),
                             foreignTable,
                             foreignColumn,
                             primaryTable,
                             primaryColumn);
 }
コード例 #3
0
 public static void AddForeignKey(this ITransformationProvider migration, string foreignTable, string primaryTable)
 {
     migration.AddForeignKey(migration.ForeignKeyName(foreignTable, primaryTable),
                             foreignTable,
                             primaryTable + "Id",
                             primaryTable,
                             "Id");
 }
コード例 #4
0
 public static void AddForeignKey(this ITransformationProvider provider, string foreignTable, string primaryTable,
     ForeignKeyConstraint constraint = ForeignKeyConstraint.NoAction)
 {
     provider.AddForeignKey(foreignTable.ForeignKeyNameTo(primaryTable),
         foreignTable,
         primaryTable.ForeignId(),
         primaryTable,
         "Id",
         constraint);
 }
コード例 #5
0
        public static void AddConstraint(this IQuery query, ObjectName tableName, ConstraintInfo constraintInfo)
        {
            if (constraintInfo.ConstraintType == ConstraintType.PrimaryKey) {
                var columnNames = constraintInfo.ColumnNames;
                if (columnNames.Length > 1)
                    throw new ArgumentException();

                query.AddPrimaryKey(tableName, columnNames[0], constraintInfo.ConstraintName);
            } else if (constraintInfo.ConstraintType == ConstraintType.Unique) {
                query.AddUniqueKey(tableName, constraintInfo.ColumnNames, constraintInfo.ConstraintName);
            } else if (constraintInfo.ConstraintType == ConstraintType.Check) {
                query.AddCheck(tableName, constraintInfo.CheckExpression, constraintInfo.ConstraintName);
            } else if (constraintInfo.ConstraintType == ConstraintType.ForeignKey) {
                query.AddForeignKey(tableName, constraintInfo.ColumnNames, constraintInfo.ForeignTable,
                    constraintInfo.ForeignColumnNames, constraintInfo.OnDelete, constraintInfo.OnUpdate, constraintInfo.ConstraintName);
            }
        }
 /// <summary>
 /// Adds a foreign key with a single column (without a name)
 /// </summary>
 /// <param name="databaseColumn">The database column.</param>
 /// <param name="foreignTableName">Name of the foreign table.</param>
 /// <returns></returns>
 public static DatabaseColumn AddForeignKey(this DatabaseColumn databaseColumn, string foreignTableName)
 {
     return databaseColumn.AddForeignKey(null, foreignTableName);
 }
 /// <summary>
 /// Adds a foreign key with a single column
 /// </summary>
 /// <param name="databaseColumn">The database column.</param>
 /// <param name="foreignKeyName">Name of the foreign key.</param>
 /// <param name="foreignTable">The foreign table.</param>
 /// <returns></returns>
 public static DatabaseColumn AddForeignKey(this DatabaseColumn databaseColumn, string foreignKeyName, Func<IEnumerable<DatabaseTable>, DatabaseTable> foreignTable)
 {
     if (databaseColumn == null) throw new ArgumentNullException("databaseColumn", "databaseColumn must not be null");
     if (foreignTable == null) throw new ArgumentNullException("foreignTable", "foreignTable must not be null");
     var table = databaseColumn.Table;
     var fkTable = foreignTable(table.DatabaseSchema.Tables);
     return databaseColumn.AddForeignKey(foreignKeyName, fkTable.Name, fkTable.SchemaOwner);
 }
		public static void AddForeignKey(this TransformationProvider database, string name, string sourceTable, string sourceColumn, string destTable, string destColumn)
		{
			database.AddForeignKey(name, sourceColumn, new[] { sourceColumn }, destTable, new[] { destColumn });
		}