Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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));
        }