Никогда, никогда, никогда не позволяйте пользователю иметь доступ к назначению или созданию идентификатора базовых объектов. Они должны поддерживаться системой.
Представьте себе кошмар попыток выяснить, с какой сущностью связана связанная сущность в случае, если пользователь выбирает уже используемый идентификатор.
Вместо этого у вас должен быть обычный идентификатор сущности некоторого типа (int, guid и т. Д.), Который система назначает и использует для ссылок на все зависимые объекты. Затем имейте некоторый «внешний» идентификатор, в который пользователь может поместить свой собственный идентификатор.
Может быть, это как-то связано с внешней системой, а может и нет. Дело в том, что вы сможете поддерживать свою последовательность независимо от того, что они делают.