2014-07-20 6 views
0

내가 열거 다음과 같이 정의한다고 가정는 SqlDataReader 개체 클래스로는 SQL에서 null 허용 열거 읽기

public enum ServiceType : int 
    { 
     None= 0, 
     TBB= 1, 
     Doctor= 2, 
     Organization = 3 
    } 

자, 클래스 I는 다음과 같이 사용 :

지금
public Utility.ServiceType ? ServiceType { get; set; } 

, 어떻게 읽을 것 SqlDataReader 클래스의 SQL에 저장된 값? 나는

ServiceType = reader["ServiceType "] as Utility.ServiceType ? 

하지만 값으로 널 얻기로했습니다.

+0

'[ServiceType "]'이 (가) '[ServiceType"]'이 (가) 읽습니까? 공간이 문제를 일으킬 수 있습니다. –

+0

@MatthewHaugen. 코드를 복사하는 동안 내 실수입니다. 내 원래 코드에는 공간이 없습니다. 이 문제는 SQL에서 해당 필드를 기본값 '0'으로 필수로 설정하여 해결됩니다. 따라서 다음과 같이 SQL에서 값을 읽습니다. 'Enum.Parse (typeof (Utility.ServiceType), reader [ "ServiceType"]. ToString()) Utility.ServiceType?'으로하지만 ServiceType이라는 필드에 NULL 값이 있으면 SQL에서 값을 읽는 방법에 관심이 있습니다. –

답변

1

나는 이것을 일찍이 봐야했다. 내 사과. 내 내기가이 문제는 unboxing 문제입니다. 다음을 수행해야 할 수 있습니다.

var field = reader["ServiceType"]; 
if (field == DBNull.Value) 
    ServiceType = null; 
else 
    ServiceType = (Utility.ServiceType)(int)field;