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)); }