0

나는이 인터페이스를 구현하는 인터페이스와 클래스를 가지고있다.discriminator없이 NHibernate를 사용하여 클래스 계층 당 하나의 테이블을 유지?

public interface IPhase { 
    string Description { get; set; } 
    int Id { get; } 
    string Phase { get; set; } 
} 

public class Phase : IPhase { 
    // Implementation here... 
} 

지금, NHibernate에 2.1.2.GA를 사용하여, 나는 인터페이스와 그 구현을 매핑 테이블 당 클래스 계층 구조를 사용하고자하는, 그리고 실제로,이 같은 판별이 필요하지 않습니다 implementor가이 테이블에 지속되는 유일한 클래스가됩니다. 나는 대략 1 년 반 동안 NHibernate를 지금 사용하지 않았고, 여기에 메모리 공백을 겪고있다 ...

나는 FNH를 사용하지 않는다는 점을 제외하고이 질문과 답변을 읽었다.
NHibernate Mapping: Save hierarchy to single table without discriminator

  1. 나는 subclass을 사용하는 동안 discriminator 속성이 필수인지 궁금해?

  2. 내 XML 매핑이이 특정 컨텍스트에서 어떻게 보입니까?

도움 주셔서 감사합니다.

답변

5

물론 NHibernate는 클래스 당 테이블 매핑을위한 판별 기가 필요합니다. 그렇지 않으면 데이터베이스에서 행을 가져올 때 다른 하위 클래스를 어떻게 식별해야합니까?

인터페이스 구현이 하나만있는 경우 왜 매핑해야합니까? 클래스를 상속없는 일반 엔터티로 매핑하면됩니다.

편집 : 매핑에서 인터페이스에 대한 참조가있을 수 있습니다. 이 경우 다음과 같이 abstract="true"으로 기본 클래스 (인터페이스)를 표시하는 concrete-class-table 매핑을 시도 할 수 있습니다. http://nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcrete

+0

+1이 옵션을 사용하면 'table-per -concrete-class' 전략. 저의 관심사에 대답 해 주셔서 감사합니다. =) –

관련 문제