2013-01-10 2 views
2

Fluent NHibernate와 관련된 질문이 있습니다. 하나의 엔티티를 여러 테이블에 매핑하는 스키마를 설명 할 수 없습니다.엔티티를 여러 테이블에 매핑하기

Create table CeTypes (Id int not null PRIMARY KEY, Name nvarchar(100) not null) 
Create table CeValues (Id int not null PRIMARY KEY, Name nvarchar(100) not null) 
Create table Ces (Id int not null PRIMARY KEY, CeType_id int not null FOREIGN KEY REFERENCES CeTypes(Id), CeValue_id int not null FOREIGN KEY REFERENCES CeTypes(Id)) 

다음과 같은 개체가 : 데이터베이스의 다음과 같은 구조가없는 도메인의

public class Ce 
{ 
    public virtual int Id { get; set; } 
    public virtual string Type { get; set; } 
    public virtual string Value { get; set; } 
} 

CeType, CeValue 엔티티는 더있다. 필자는 매핑 Ce 엔티티를 설명하는 방법을 모른다.

public class CeMap : ClassMap<Ce> 
{ 
    public CeMap() 
    { 
     Table("Ces"); 
     Id(c => c.Id); 

     Join("CeTypes", m => m.Map(ce => ce.Type).Column("Name")); 
     Join("CeValues", m => m.Map(ce => ce.Value).Column("Name")); 
    } 
} 

그러나 이러한 계획 CeType와

, CeValue 테이블 필드 Ce_id이 있어야합니다

는 설명하기 위해 노력했다. 현재 데이터베이스 구조 하에서 스키마 매핑을 어떻게 기술 할 수 있습니까?

답변

0

처음에 nHibernate를 사용하기 시작했을 때 똑같은 일을 시도했는데이를 수행 할 방법을 찾을 수 없었습니다. 실제로 여러 테이블을 단일 객체에 매핑 할 수 있다고 생각하지 않습니다. 일반적으로 테이블 당 하나의 엔티티가 있습니다. 각 엔티티는 해당 테이블에 맵핑되며 이들 엔티티간에 참조/hasmany 링크가 있습니다.

데이터베이스에 더 간단하게 매핑 할 수 있기 때문에 테이블 당 하나의 엔티티를 갖는 것이 장기적으로 더 좋습니다.

관련 문제