Я предполагаю, что PK вы упомянули это тип междунар и это не было бы безопасно, чтобы выставить значения.
В этом случае я бы добавил альтернативный ключ типа 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
, что, скорее всего, является открытым целым идентификатором вопроса.
Можете ли вы указать мне на веб-страницу, где показано, как реализовать GUID в SQL Management Studio? – darking050
Вот страница MSDN: http://msdn.microsoft.com/en-us/library/ms187942.aspx (_GUIDs_ называются _uniqueidentifier_ в SQL Server). Объявите столбец типа _uniqueidentifier_ и убедитесь, что вы заполнили его одним из двух способов, которые я представил в ответе. – GolfWolf
спасибо. Небольшой вопрос, в C# будет ли переменная строки типа соответствовать ему? – darking050