Ответ 1
Соответствующий тип данных SQL является подписанным числом, поэтому я должен придерживаться int
, чтобы избежать любых неожиданностей.
Мы знаем, что первичными ключами обычно являются положительные целые числа.
Можно ли использовать uint
вместо int
как первичный ключ в классе модели данных?
Пример:
public class Customer
{
public uint CustomerId {get;set;}
//others are omitted for the sake of simplicity.
}
Соответствующий тип данных SQL является подписанным числом, поэтому я должен придерживаться int
, чтобы избежать любых неожиданностей.
uint не совместимый с CLS, поэтому обычно рекомендуется не использовать его в публичных API-интерфейсах.
Если кто-то другой наткнется на этот вопрос - не используйте uint
для своих ключей. Я только что попробовал это с Entity Framework 6.1.12, и код продолжал терпеть неудачу с загадочным исключением "Сущность не имеет ключа".
Только после того, как я изменил свойство uint обратно на int, он начал работать как ожидалось.
Итак, да, это отстойно, если не использовать 2 + миллиард диапазона, но это так. И если у вас есть хоть небольшое сомнение в том, что у вас может быть миллиард плюс записи, идите долго. По иронии судьбы, тогда у вас будет 9,223,372,036,854,775,808 номеров, которые не использовались;).
Я думаю, что это плохая идея, причина типа int более оптимизирована для использования в .NET Framework.