Я бы сказал, что ваш дизайн слишком хрупкий. PK на самом деле не должен быть проблемой приложения, за исключением получения данной записи, imo.
Тем не менее, если вы должны сделать это таким образом, вы можете установить флаг StoreGeneratedPattern в значение «Нет», а затем вставить из приложения любой желаемый ПК, но, конечно, если сама БД использует автоинкрементный ключ некоторого добрый (например, IDENTITY), тогда вы все равно сломаетесь.
Обновление
Почему требования к a) иметь одну строку в год и b) откатываться каждый год, переводить что-либо вообще в PK? Почему бы просто не иметь столбец 'year' (установлен на UNIQUE или нет), который можно использовать в вашем запросе?