2013-12-19 1 views
1

Linq-to-SQL 작업입니다.Linq-to-SQL 외래 키는 enum입니다

사진보기 I이 인스턴스화 할 때

enter image description hereenter image description here

enter image description hereenter image description here

enter image description here

, I는 널 (NULL) 값은 비 - 인 유형 XAccountId 갖는 부재에 할당 할 수 없습니다 '런타임 예외를 얻을 null 허용 값 유형 '입니다. Type을 XAccountId에서 int로 변경하면 모든 것이 예상대로 작동합니다. 왜? 열거 형을 키 유형으로 사용할 수 있습니까?

추가 : 속성 창에서 Nullable = true로 설정했지만 생성 된 코드는 private XAccountId _AccountId1 = default(XAccountId);입니다. 그래서 ... DBML 생성기가 제대로 작동하지 않습니까?

추가 2 : http://social.msdn.microsoft.com/Forums/en-US/ee4f5703-570c-47bf-8003-bf15bd0f1441/map-nullable-enum 내 문제와 관련 있습니다. DBML 생성기는 열거 형에 대해 CanBeNull = "true"를 무시합니다.

+3

여기에서 무슨 일이 벌어지는지는 아직 분명하지 않습니다. –

답변

1

유형을 XAccountId? (물음표와 함께)으로 설정할 수 있습니까? 오류가 말하듯이 값 유형에 널 (null)을 지정할 수 없으며 참조 유형에만 할당 할 수 있습니다. enum은 값 유형입니다. 다른 방법으로는 null을 사용할 수없는 열을 만들 수 있습니다.

+0

나는 이것을 전에 시도했다. 그것은 작동합니다. 그러나. XAccountId를 설정해야합니까? XAccount에서도 마찬가지지만 모델에 의해 nullable이 아닙니다. – Denis

+0

모델을 올바르게 읽었 으면 모델 (두 번째 화면 하단)에 nullable로 설정하고 nullable로 밑줄을 그어 "nullable-false"가되어서는 안됩니까? db로 어떻게 정의되어 있습니까? – Konstantin

+0

XAccount에서 null이 아닙니다 (데이터베이스의 기본 키임). XSourceSystem에서는 null 일 수 있습니다 (XSourceSystem과 연결된 XAccount 없음). – Denis