public virtual string AddConstraint(DatabaseTable databaseTable, DatabaseConstraint constraint)
        {
            //we always use the named form.
            var constraintName = constraint.Name;

            if (string.IsNullOrEmpty(constraintName))
            {
                throw new InvalidOperationException("Constraint must have a name");
            }
            //primary, unique and foreign key constraints must have columns
            if (constraint.Columns.Count == 0 && constraint.ConstraintType != ConstraintType.Check)
            {
                throw new InvalidOperationException("Constraint has no columns");
            }

            //use the standard constraint writer for the database
            var constraintWriter = _ddlFactory.ConstraintWriter(databaseTable);

            if (constraintWriter == null)
            {
                return(null);
            }
            constraintWriter.IncludeSchema = IncludeSchema; //cascade setting
            constraintWriter.EscapeNames   = EscapeNames;
            return(constraintWriter.WriteConstraint(constraint));
        }