2009-10-31 2 views
2

Visual Studio 2008에는 데이터 형식 디자이너를 사용하여 int 형식 필드를 Nullable로 설정할 수 없다는 버그가 있습니다. Visual Studio 2005로 돌아가는 오류보고가 있지만이 문제는 해결되지 않았습니다.Visual Studio 데이터 집합 디자이너 Null

유일한 선택 가능한 동작은 null 값이 데이터베이스에서 다시 전달되는 경우 예외를 발생시키는 코드를 내보내는 것입니다. 값을 null로 설정하면 데이터 유형이 "int"가됩니다. 대신 "int". 실제 개체 예제는 종속 개체가 아직 할당되지 않았기 때문에 외래 키가 null 인 경우입니다.

Visual Studio 데이터 집합을 사용하지 않고 1을 제외한 현명한 해결 방법이 있습니까? 2. 데이터 형식을 문자열로 변경합니다 (null을 허용하지만 강력한 입력 지점을 무효화하고 수많은 형 변환을 강제 적용 함). 3. 방출 된 코드를 변경합니다. (디자이너를 통해 데이터 세트를 변경 한 경우 덮어 쓰기됩니다).

답변

2

시도 this link.

필자는 저자가 DataSet 디자이너 코드 (방금 다시 생성 됨) 및 부분 클래스 사용을 손으로 업데이트하는 것을 포함하여 많은 어려움을 겪었던 것으로 의심됩니다. VS2008에서 그를 위해 일을 무엇

그가 해결하는 데 필요한 컬럼에 대해 다음 값을 추가 할 파일을 수동으로 .XSD 데이터 집합을 편집했다 : 이것은 무엇을

msprop:nullValue="-1" 
nillable="true" 

을 반환 -1의 장소에 에러가없는 null.

<xs:element name=“FolderParent_ID” msprop:nullValue=“-1” nillable=“true” msprop:Generator_UserColumnName=“FolderParent_ID” msprop:Generator_ColumnVarNameInTable=“columnFolderParent_ID” msprop:Generator_ColumnPropNameInRow=“FolderParent_ID” msprop:Generator_ColumnPropNameInTable=“FolderParent_IDColumn” type=“xs:int” minOccurs=“0” /> 

데이터 집합을 편집하고 저장할 때 이러한 업데이트가 손실되지 않습니다

저자는 다음과 같이 편집 완전한 칼럼의 예를 제공합니다.

공정한 경고 : 나는이 코드를 한번도 사용하지 않았습니다. 누군가가 VS2008 (Tom이 게시 한 두 번째 댓글을 찾으십시오)에서 그 사람이 그에게 효과가 없다고 말함으로써 저자의 블로그에 댓글을 달았습니다. Tom은 문제를 제시합니다.

나는 그것이 당신을 위해 작동하기를 바랍니다.

+0

여기서는 효과가있는 것 같습니다. – hawbsl

0

connect.microsoft.com 항목 (Danila Korablin의 Nullable types for typed dataset)에서 데이터 세트 수정에 사용할 수있는 대체 방법을 제공하는 해킹을 보여주는 대안이 제안되었습니다.

간결하게 말하면, 행 클래스에 null 가능 속성을 추가하기위한 저장소로 myDataSet .cs 모듈의 부분 클래스를 사용합니다. 코드에서 이러한 속성에 액세스 할 수 있지만 디자이너에서는 액세스 할 수 없습니다. 이러한 속성 추가 방식은 원래의 깨진 속성을 대체 할 수 없습니다.

데이터 소스 창에는 이러한 방식으로 데이터 집합 클래스에 추가하는 속성도 표시되지 않습니다. 올바른 nullable 형식의 열을 추가하여 MS에서 생성 한 데이터 테이블 클래스를 복구하려고하면 데이터 원본 시각화 프로그램에서 해당 데이터 집합을 무효화하여 데이터 집합을 무효화하므로 아무 것도 표시하지 않습니다. 즉, Visual Studio의 기본 제공 디자이너를 사용하여 올바른 유형의 열에 액세스 할 수 없습니다.

이 결점은 허용 할 수없는 열을 포함하는 행을 복사 할 수없는 것처럼 간단합니다.

Visual Studio 2005의 데이터 집합 디자이너에서 Nullable 열이 지원되지 않음을 확인할 수 있습니다.Microsoft는이 문제를 해결하지 않을 것이라는 점을 분명히 반복해서 밝혔습니다.