See the question and my original answer on StackOverflow

A naming convention can support many different types of names (full, short, display, etc.) depending on the type of abstract concept (constraint, table, procedure, etc.) processed by the inference pipeline, this is how is defined CodeFluent's INamingConvention (in the CodeFluent.Model.Common.Naming namespace):

public interface INamingConvention
{
    string GetName(INamedObject obj, IDictionary context);
    string GetShortName(IShortNamedObject obj, IDictionary context);
    string GetFullName(IFullNamedObject obj, IDictionary context);
    string GetDisplayName(IDisplayNamedObject obj, IDictionary context);
    string GetClrFullTypeName(IClrFullTypeNamedObject obj, IDictionary context);
    string GetPersistenceName(IPersistenceNamedObject obj, IDictionary context);
    string GetPersistenceShortName(IPersistenceShortNamedObject obj, IDictionary context);
}

Constraints use short names and full names, so if you derive from FormatNamingConvention (which implements INamingConvention), you should override the GetShortName and/or GetFullName methods and cast obj as a Constraint.

Note it is unusual to have so many problems with short names, or maybe all your entities start with the same names over and over accross model versions. You can also tweak the short name length (wich is by default set to 3) with the persistenceShortNameLength attribute: CodeFluentRuntimeException (CF1024): Cannot determine short name