2011-12-20 6 views
1

속성으로 DBnull을 전달해야 할 때 좋은 사례입니다. nullable 형식으로 만들려면 좋습니다. 왜냐하면 우리가 Null 값을 우리의 변수에 의해 백엔드에 전달해야 할 필요가 있기 때문입니다. 우리는 그것들을 Nullable로 만들었습니다. 그러나 이것은 프로퍼티에서도 괜찮습니다.개체의 속성을 Null 가능 형식으로 지정 하시겠습니까?

답변

2

경우에 따라 실제로 선택의 여지가 없습니다. 예를 들어 T-SQL bit 데이터 형식 (.NET에서 BOOL 형식); T-SQL에서,이 NULL이 될 수 0 또는 1 그래서, 당신은 같은 NULL이 유형으로 설정해야합니다 :

public bool? MySqlBitField { get; set; } 

업데이트 : 나는 책 프레임 워크 디자인 가이드 라인의 빠른 참조했다 (Cwalina, Abrams), Addison Wesley, Nullable 유형 및 사용법 책에서 일부 텍스트를 붙여 넣었습니다. Btw, 나는이 책을 좋은 추천서로 추천한다. 이 책에서

:

존재 (즉, 옵션 값)하지 않을 수 있습니다 값을 표현하기 위해 Null 허용을 사용하는 것이 좋습니다. 예를 들어, 선택적 테이블 C 럼을 나타내는 특성을 가진 데이터베이스에서 강하게 유형화 된 레 Z 드를 리턴 할 때이를 g 용하십시오.

참조 유형 값이 null 일 수 있다는 사실을 이용하여 비슷한 방식으로 참조 유형을 사용하지 않는 한 Nullable을 사용하지 마십시오.

예를 들어, 선택적 매개 변수를 나타 내기 위해 null을 사용하지 않을 것입니다.

// bad design 
public class Foo { 
    public Foo(string name, int? id); 
} 

// good design 
public class Foo { 
    public Foo(string name, int id); 
    public Foo(string name); 
} 

일반적인 three-state 값을 나타 내기 위해 Nullable을 사용하는 AVOID. Nullable은 true, false 및 사용할 수없는 진정한 부울 값을 나타내는 데 사용해야합니다. 세 가지 상태 (예 : 예, 아니요, 취소) 만 나타내려면 열거 형을 사용하는 것이 좋습니다.

System.DBNull을 사용하여 AVOID. 대신 Nullable을 선호하십시오. 파블로 카스트로

Null 허용에서

참고 옵션 데이터베이스 값의 일반적인 더 나은 표현이다. Nullable은 널 값을 나타낼 수있는 기능을 제공하지만 데이터베이스 null 조작 시맨틱을 가져 오지는 않습니다. 특히 연산자와 함수를 통해 null 전파를 얻지 못합니다. 전달 의미론에 대해 깊이 신경 쓰면 DBNull을 고수하십시오.

관련 문제