Нет, вам не нужно использовать Guids, вы можете использовать любой тип ключа, который вы хотите.
Если вы застряли с Guids, подумайте, чтобы база данных генерировала их для вас последовательно, сделав привязку по умолчанию для поля pk newsequentialid()
.Это по крайней мере устранит фрагментацию в вашем кластерном индексе.Вам нужно внести несколько изменений в .dbml, если вы это сделаете.В ключевом поле в .dbml Auto Generated Value = true
и Auto-Sync = OnInsert
Что касается генерации значения перед вставкой в базу данных, я не вижу, как использование поля идентификации помогает вам.Вам все равно придется вставить в базу данных, чтобы надежно получить правильное значение.(Столбцы идентификаторов будут иметь те же параметры автоматического создания / автосинхронизации, что и выше)
Ints или Guids, вы должны иметь возможность заключить вставку в транзакцию, вставить запись, получить новое значение ключа, запустить свою бизнес-логикуи, если это не удается, откатите вновь вставленную запись.