Подтвердить что ты не робот

Является ли хорошей идеей использовать uint вместо int в качестве первичного ключа в классе модели данных?

Мы знаем, что первичными ключами обычно являются положительные целые числа.

Можно ли использовать uint вместо int как первичный ключ в классе модели данных?

Пример:

public class Customer
{
   public uint CustomerId {get;set;}
   //others are omitted for the sake of simplicity.
}
4b9b3361

Ответ 1

Соответствующий тип данных SQL является подписанным числом, поэтому я должен придерживаться int, чтобы избежать любых неожиданностей.

Ответ 2

uint не совместимый с CLS, поэтому обычно рекомендуется не использовать его в публичных API-интерфейсах.

Ответ 3

Если кто-то другой наткнется на этот вопрос - не используйте uint для своих ключей. Я только что попробовал это с Entity Framework 6.1.12, и код продолжал терпеть неудачу с загадочным исключением "Сущность не имеет ключа".

Только после того, как я изменил свойство uint обратно на int, он начал работать как ожидалось.

Итак, да, это отстойно, если не использовать 2 + миллиард диапазона, но это так. И если у вас есть хоть небольшое сомнение в том, что у вас может быть миллиард плюс записи, идите долго. По иронии судьбы, тогда у вас будет 9,223,372,036,854,775,808 номеров, которые не использовались;).

Ответ 4

Я думаю, что это плохая идея, причина типа int более оптимизирована для использования в .NET Framework.