기본 키는 대개 양의 정수임을 알고 있습니다.데이터 모델 클래스의 기본 키로 int 대신 uint를 사용하는 것이 좋습니다.
int
대신 uint
을 데이터 모델 클래스의 기본 키로 사용하는 것이 좋습니까?
예 :
public class Customer
{
public uint CustomerId {get;set;}
//others are omitted for the sake of simplicity.
}
기본 키는 대개 양의 정수임을 알고 있습니다.데이터 모델 클래스의 기본 키로 int 대신 uint를 사용하는 것이 좋습니다.
int
대신 uint
을 데이터 모델 클래스의 기본 키로 사용하는 것이 좋습니까?
예 :
public class Customer
{
public uint CustomerId {get;set;}
//others are omitted for the sake of simplicity.
}
대응하는 SQL 데이터 유형은 부호가있는 번호이므로 어떤 놀라움을 피하기 위해 int
을 사용합니다.
해당 SQL 데이터 유형을 uint로 변경할 수 있습니까? – xport
@Recycle Bin : 내가 알고있는 것은 아니기 때문에 왜 당신이 원하는지 확신 할 수 없습니다. 2 억 이상의 숫자가 필요하다면 항상 bigint로 전환하거나 UniqueIdentifier와 같은 것을 고려할 수 있습니다. –
나는 그것이 INT 타입의 원인은 더 .NET Framework의 사용에 최적화되어 나쁜 생각, 생각합니다.
그래서 int.MaxValue 고객보다 더 많은 것을 처리 할 수 있습니까? – xport
@Recycle Bin : 20 억 이상의 고객이있는 경우 서명 된 대 서명되지 않은 int를 키에 사용하는 것에 대한 질문은 내 우려 목록의 상단 부근에 있지 않습니다. 그리고 만약 그렇다면, 항상 길거나 큰 것이 있습니다. –
내가 강력히 권장하는 한 가지 방법은 키를 짧게 사용하는 것입니다. 좋은 (매우 똑똑한) 친구는 특정 성능에 중요한 테이블이 2^16 레코드에 접근 할 수 없다는 매우 현실적인 가정하에 한 번 그렇게했습니다. 데이터베이스 리팩터 몇 개, 비즈니스 성장 및 문제의 테이블이 그 한계에 부딪혔다. 데이터의 양과 키 전파로 인해 한 열을 int로 마이그레이션하는 데 한 달에 12 명이 필요했습니다. –
다른 사람이이 질문에 비틀 거리는 경우 - uint
을 키에 사용하지 마십시오. 필자는 Entity Framework 6.1.12를 사용하여이 작업을 시도했으며 암호화 된 "Entity does not have key"예외로 인해 코드가 계속 실패했습니다.
uint 속성을 int로 변경 한 후에야 예상대로 작동하기 시작했습니다.
그래, 네, 사용하지 않는 2 억 이상의 범위를 사용하는 것이 낫지 만 그게 상황입니다. 그리고 10 억을 넘는 기록을 남기게 될지 약간 의심 스럽다면 오래 갈 것입니다. 아이러니하게도 사용하지 않은 숫자는 9,223,372,036854775808입니다.).
너는 9,223,372,036854775807이 너에게 충분하지 않다고 너무 낙관적이다 .-) – zerkms
@zerkms : 생각하지 마라. 그것은 내 상상을 초월합니다. – xport
@Recycle Bin : 그러면 아무런 차이가 없습니다. – zerkms