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

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

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

Пример

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

Ответы [ 4 ]

12 голосов
/ 07 февраля 2011

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

8 голосов
/ 13 февраля 2015

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

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

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

8 голосов
/ 07 февраля 2011

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

3 голосов
/ 07 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...