/// <summary> /// Generates the SQL string to create the named Foreign Key Constraint in the database. /// </summary> /// <param name="d">The <see cref="Dialect.Dialect"/> to use for SQL rules.</param> /// <param name="constraintName">The name to use as the identifier of the constraint in the database.</param> /// <param name="defaultSchema"></param> /// <param name="defaultCatalog"></param> /// <returns> /// A string that contains the SQL to create the named Foreign Key Constraint. /// </returns> public override string SqlConstraintString(Dialect.Dialect d, string constraintName, string defaultCatalog, string defaultSchema) { string[] cols = new string[ColumnSpan]; string[] refcols = new string[ColumnSpan]; int i = 0; IEnumerable <Column> refiter; if (IsReferenceToPrimaryKey) { refiter = referencedTable.PrimaryKey.ColumnIterator; } else { refiter = referencedColumns; } foreach (Column column in ColumnIterator) { cols[i] = column.GetQuotedName(d); i++; } i = 0; foreach (Column column in refiter) { refcols[i] = column.GetQuotedName(d); i++; } string result = d.GetAddForeignKeyConstraintString(constraintName, cols, referencedTable.GetQualifiedName(d, defaultCatalog, defaultSchema), refcols, IsReferenceToPrimaryKey); return(cascadeDeleteEnabled && d.SupportsCascadeDelete ? result + " on delete cascade" : result); }
/// <summary> /// Generates the SQL string to create the named Foreign Key Constraint in the database. /// </summary> /// <param name="d">The <see cref="Dialect.Dialect"/> to use for SQL rules.</param> /// <param name="constraintName">The name to use as the identifier of the constraint in the database.</param> /// <param name="defaultSchema"></param> /// <returns> /// A string that contains the SQL to create the named Foreign Key Constraint. /// </returns> public override string SqlConstraintString(Dialect.Dialect d, string constraintName, string defaultSchema) { string[] cols = new string[ColumnSpan]; string[] refcols = new string[ColumnSpan]; int i = 0; foreach (Column col in referencedTable.PrimaryKey.ColumnCollection) { refcols[i] = col.GetQuotedName(d); i++; } i = 0; foreach (Column col in ColumnCollection) { cols[i] = col.GetQuotedName(d); i++; } return(d.GetAddForeignKeyConstraintString(constraintName, cols, referencedTable.GetQualifiedName(d, defaultSchema), refcols)); }