2010-04-21 1 views
4

Linq2Sql을 사용 중이고 개체 필드 (열거 형)를 데이터베이스의 비트 또는 int 유형에 바인딩하려고합니다. 예를 들어 내 모델에 성별 필드가 있어야합니다. 이미 DBML을 편집하고 Type을 제 enum을 가리 키도록 변경했습니다. 같은 아이디어를 사용하여 다른 영역의 성별 및 드롭 다운 목록에 대한 라디오 버튼 (내가 생각한 것 같음)을 만들고 싶습니다. 내 열거 형은 다음과 같습니다.열거 형을 비트 또는 int의 DbType에 바인딩하려면 어떻게해야합니까?

public enum Gender 
{ 
    Male, 
    Female 
} 

Mapping between DbType 'int' and Type 'Project.Models.Gender' in Column 'Gender' of Type 'Candidate' is not supported. 

이 매핑을 수행하는 방법에 대한 아이디어. 나는 열거 형에 뭔가 빠져있다.

답변

11

당신이 int과 같이 열거하는 경우 : 데이터베이스의

public enum Gender 
{ 
    Male = 0, 
    Female 
} 

int 열을, 다음 매핑은 문제없이 작동합니다.

<Column Name="Gender" Type="global::Project.Models.Gender" DbType="Int NOT NULL" 
     CanBeNull="false" /> 

global:: 키워드가 여기에 해당 될 수 있습니다. 정수 데이터 형식을 열거 형에 매핑하는 데는 문제가있었습니다.

+0

또 다른 게시물에서 global ::을 추가했으며 빌드 문제가 사라졌으며 이제는 데이터베이스에 올바르게 저장됩니다. 내 다음 문제는 내가 linq 선택을 할 때입니다. 그것은 잘못된 캐스팅 예외를 제공하고 있습니다. 내가 사용한 enum과 관련이 있는지 확실하지 않습니다. DbType이 null이 아니어야합니까? – uriDium

+0

@uriDium : Nullable 열거 형을 LINQ와 함께 사용하지 않았지만 작동해야한다고 가정하십시오. set DbType = "Int"및 CanBeNull = "true". – Alex

+0

좋아, 나는 모든 것을 다시 시도했다. 아마도 뭔가 혼란스러워 할 수 있습니다. 디자이너에게 테이블을 재배치하고 유형을 다시 변경하고 모든 작업을 선행했습니다. 나는 global :: bus가 분류 될 운명이라고 생각했다. 맞춰봐. 감사합니다 – uriDium

2

나는 ..

Type="System.Boolean" DbType="bit" CanBeNull="true" 

밖으로 작동하는 반면 유형 내가 nullable 형식과 유형을 지정해야 열거를 들어, [부울의] null 허용해야한다는 것으로 나타났습니다

Type="WhatNextEnum?" DbType="int" CanBeNull="true" 

"DBML1005 : DbType 'int'와 Type 'WhatNextEnum'... 간의 매핑이 지원되지 않습니다." 오류

+0

게시 해 주셔서 감사합니다. 나는이 정확한 문제를 겪고 있었다. –

관련 문제