2011-10-23 2 views
0

DiscriminatorValue의 기본값은 Subclass의 정규화 된 이름입니다.Fluent NHibernate를 사용하여 Discriminator 값 지정

이 숫자를 숫자, 예 : enum 값 또는 단일 문자로 매핑하고 싶습니다. DiscriminatorValue을 사용하여 매핑 내에서 지정하려고 시도했지만 아무런 영향이 없으며 하위 클래스 이름을 사용합니다.

예 :

public class MovieMapping : SubclassMap<Movie> 
{ 
    public MovieMapping() 
    { 
     Map(m => m.Director); 
     HasMany(m => m.Actors) 
      .KeyColumn("MovieId") 
      .AsList(l => l.Column("ActorIndex")); 
     DiscriminatorValue("'M'"); 
    } 
} 

내가 Discriminator의 열에서 M를 볼 것으로 예상하지만, 대신 완전한 서브 클래스 이름과 함께 오는 것이다.

Fluent NHibernate로이 작업을 수행 할 수있는 사람은 누구입니까?

답변

2

부모 클래스에서 DiscriminateSubClassesOnColumn을 사용하고있었습니다. 그러나 비 제네릭 버전은 정수 값을 필요로 함을 나타내는 서브 클래스에도 불구하고 문자열을 기본값으로 사용하므로 유형 이름 문자열이 저장되었습니다.

DiscriminateSubClassesOnColumn의 일반 버전을 찾았 으면이를 사용하고 discriminator 열의 정수 값을 선택합니다.

DiscriminateSubClassesOnColumn ("ProductType", (int) 0);

매핑 엔진이 부모 클래스가 문자열 매핑을 가지고 있다는 사실과 자식 클래스가 int 값을 보내려고 시도하는 사이에 오류가 발생했지만 불일치가 무시당하는 경우 도움이되었을 것 같습니다.