public ForeignKeyConstraintDefinition CreateForeignKeyConstraint(
            Func <IEnumerable <ColumnDefinition>, string> nameProvider,
            EntityNameDefinition referencedTableName,
            ObjectIDStoragePropertyDefinition referencedObjectIDProperty)
        {
            ArgumentUtility.CheckNotNull("nameProvider", nameProvider);
            ArgumentUtility.CheckNotNull("referencedTableName", referencedTableName);
            ArgumentUtility.CheckNotNull("referencedObjectIDProperty", referencedObjectIDProperty);

            var referencingColumns = ValueProperty.GetColumnsForComparison();
            var referencedColumns  = referencedObjectIDProperty.ValueProperty.GetColumnsForComparison();

            return(new ForeignKeyConstraintDefinition(nameProvider(referencingColumns), referencedTableName, referencingColumns, referencedColumns));
        }