Я предполагаю, что упомянутый вами PK имеет тип int, и было бы небезопасно выставлять значения.
В этом случае я бы добавил альтернативный ключ типа GUID (uniqueidentifier в SQL Server),Поле может быть заполнено с помощью метода System.Guid.NewGuid()
из кода .Net или с помощью функции newid()
в SQL.
Это сделает ключ непредсказуемым.Например, если человек прослушивает ваш трафик WCF и видит PK со значением 4, он может попробовать закрыть значения (2,3,5 ...), чтобы получить доступ к другим записям.Идентификаторы GUID не являются последовательными, поэтому очень трудно угадать другие значения ключей.
Обратите внимание, что идентификаторы GUID занимают в 4 раза больше места для хранения, чем int (или 2x bigint), поэтому, если это будет большойТаблица, подход GUID может занять значительно больше места.
В этом случае вы можете пересмотреть вопрос, если раскрытие ключей действительно является проблемой безопасности;если приложение разработано для обеспечения безопасности или если все записи предназначены для просмотра кем-либо, показ значения PK не должен быть таким уж плохим.
В конце концов, если вы посмотрите на URL этой страницывы заметите значение 8690786
, которое, скорее всего, является открытым целочисленным идентификатором вопроса.