Это зависит от логики в методе GetNextPrimaryKey.
Если ваш метод выполняется в нескольких потоках, у вас будет шанс, что один и тот же ключ будет назначен нескольким объектам.
Buti, если ваш GetNextPrimaryKey продвигает ваш ключ и всегда возвращает новый ключ, независимо от того, используется он или нет, тогда проблем нет.
Но если ваша логика состоит в том, чтобы просто определить последний использованный ключ и выполнить клавишу + 1, то в многопоточных ситуациях или веб-приложениях у вас будут конфликты.
Лучше всего было бы использовать какую-то хранимую процедуру и всегда возвращать новый ключ из SP, поэтому в случае параллельного выполнения GetNextPrimaryKey проблем не возникнет.