2012-10-22 2 views
0

안녕하세요, 데이터베이스를 ORM으로 마이그레이션하려고하는데 문제가 발생했습니다. 데이터베이스는 부모 테이블과 속성을 상속하는 여러 자식 테이블이있는 상속 개념으로 만들어졌습니다. INNER JOIN을 사용하여 쿼리를 쉽게 수행하기 위해 모든 하위 테이블에는 상위 테이블의 식별 (동시에 기본 키인 외래 키)에 대한 참조 만 포함되었습니다.FluentNHibernate - 기본 키로 외래 키 매핑

BaseDocument 
{ 
    Id : Long 
    ... 
} 

AdministrativeDocument 
{ 
    Id : Long (PK), (FK : BaseDocument(Id)) 
    ... 
} 

PropositionDocument 
{ 
    Id : Long (PK), (FK : BaseDocument(Id)) 
    ... 
} 

ProjectDocument 
{ 
    Id : Long (PK), (FK : BaseDocument(Id)) 
    ... 
} 

내 질문은 : 외래 키는 C와 함께 # FluentNHibernate의 기본 키 매핑을 만들 수있는 방법이있다, 또는 나는 각 테이블에 대해 별도의 기본 키를 만들어야합니다 모델은 다음?

답변

1

표준 클래스 상속 계층 구조가 있습니다. 그냥지도로 그걸로

// inherit 
class AdministrativeDocument : Document { } 

// base class mapping 
class DocumentMap : ClassMap<Document> 
{ 
    public DocumentMap() 
    { 
     Id(x => x.Id, "Id")...; 
    } 
} 

// subclass mapping, same for all three subtables 
class AdministrativeDocumentMap : SubclassMap<AdministrativeDocument> 
{ 
    public AdministrativeDocumentMap() 
    { 
     KeyColumn("Id"); 
    } 
} 
+0

감사합니다, 완벽하게 일했습니다! –