ASP.Net 앱의 데이터 계층은 저장된 proc를 호출하여 로그인시 방문객에 대한 작은 양의 정보를 가져옵니다. 나는 자신의 전화 번호와 sproc을 전달하고, 간단한 SELECT를 사용하여 5 개의 필드를 전달한다. 첫 번째 필드는 기본 키인 BIGINT이다. 내 데이터 레이어가 DataRow를 가져 와서 데이터 개체를 만들려고합니다. 데이터 개체에서 기본 키를 나타내는 속성은 Int64입니다. 즉 다음과 같습니다캐스팅 오류없이 DataRow의 형식화되지 않은 필드 unboxing
sub = new PersistentSubscriber((String) dr["UserFirstName"],
(String) dr["UserLastName"],
phoneNumber, (Int64) dr["UserId"], (Byte) dr["SubscriberStatus"]);
가 내가 찾는거야 것은 내가 큰 기본 키 값을 가질 때 모든 것이 잘 작동한다는 것입니다 같은 88698.을 그러나, 나는 작은 하나를 얻을 때, 999처럼, 내가 얻을 해당 기본 키 속성을 설정하려고하면 "지정한 캐스트가 잘못되었습니다."오류가 발생합니다. 내가 잘못 여기서 뭐하는 거지, 형식화 된 데이터 집합에 의존하지 않고
?(Int64)dr["UserId"]
Cannot unbox 'dr["UserId"]' as a 'long'
?(int)dr["UserId"]
999
?(Int32)dr["UserId"]
999
: 내가 직접 실행 창에서 함께 연주 할 때,이 얻을?
는 지금까지 변환이 변환처럼 호출 및 이동 TryParse, 나는이 문제가 해결됩니다 가정,하지만 난 "왜"나는 모든 것을 어떻게해야합니까 더 걱정? 999는 유효한 Int64와 마찬가지로 유효한 Int32입니다. 왜 내가 어떤 변환을해야합니까? 유형이 처리 할 수있는 것보다 크지 않을 것이라는 것을 알고 있다면, 나는 잘되어야합니다. –