2009-05-07 3 views
1

Fluent NHibernate 구성으로 NHibernate를 사용하여 nullable enum을 유지할 수 없었습니다. NHibernate에이 열거 형의 캐릭터 라인 표현을 저장하려고 내가NHibernate에서 nullable enum을 어떻게 매핑 할 수 있습니까?

System.Data.SqlClient.SqlException: Conversion failed when converting the 
nvarchar value 'VGS' to data type tinyint. 

이 속성은

public virtual CostContributor? ReplacementContributor { get; private set; } 

으로 정의 된 오류를 얻고 매핑 내가 모든 시도했습니다

Map(x => x.ReplacementContributor).CustomTypeIs(typeof(CostContributor?)); 

입니다 int를 대체하는 것을 포함하여 CustomTypeIs와 CustomSqlTypeIs의 조합? 또는 바이트? CostContributor를 위해?, 그러나 아무것도 작동하지 않았다. 내가 nullable이 아닌 타입으로 만들면 잘 동작합니다.

NHibernate에 nullable enum을 매핑하는 것이 가능합니까? 아니면이 버그 또는 NHibernate에서 지원되지 않는 기능입니까?

이 작업을 수행 할 수없는 경우 해결 방법으로 내 열거 형에 정의되지 않은 값을 추가 할 것입니다.

이 CostContributorEntity라는 클래스를 추가

답변

2

이것은 bug and it's been fixed입니다.

+0

여기 제공된 링크는 죽었지 만 질문은 http://stackoverflow.com/questions/13881971/fluent-nhibernate-mapping-nullable-enum에서 답변되었습니다. – bunggo

0

제대로 그러나 여기에서 그것을 할 방법 확실하지 다른 해결 방법입니다. 클래스에는 CostContributor 유형의 property : ID 만 있습니다. 원하는 경우가 아니라면 실제 테이블을 만들 필요가 없습니다.

소비 클래스에서 ReplacementContributor를 CostContributorEntity 유형으로 변경하고 으로 매핑합니다. 참고 자료 (x => x.ReplacementContributor);

session.Load (CostContributor.Blahblah1)를 사용하여 ReplacementContributor에 할당 할 수있는 CostContributorEntity의 인스턴스를 만듭니다.

관련 문제