2010-06-15 3 views
1

두 개의 도메인 엔티티를 같은 테이블에 매핑하려고합니다. 우리는 우리의 도메인 모델을위한 스마트 한 엔티티를하고 있습니다. 그래서 우리는 편집 가능한 주소와 읽기 전용 주소라는 개념을 가지고 있습니다. 클래스 맵을 사용하여 매핑 된 및 모두 NHibernate에서 SchemaExport 클래스를 사용하여 스키마를 내보낼 때까지 잘 될 것 같습니다. 테이블이 이미 있다고 말하는 것은 오류입니다.Fluent Nhibernate - 두 엔티티를 같은 테이블에 매핑

내가보기에는 너무 간단하다고 가정합니다.

아이디어가 있으십니까?

감사

업데이트 내가해야하는 언급하지 않았다 다른 몇 가지가 있습니다

. 나는 지금까지 답변 한 사람들을 애원하지만 그들은 우리를 위해 일하지 않습니다.

하나는 우리가 하나의 주소 테이블을 가지며 주소가있는 모든 엔터티에 열을 포함하지 않는다는 것입니다.

다른 하나는 공통 기본 클래스를 사용할 수 없다는 것입니다. 편집 가능한 객체의 경우 하위 클래스에 유효성 검사 동작을 추가하는 수퍼 클래스가 있습니다. 읽기 전용 객체는 이러한 동작을 필요로하지 않으며 이러한 동작을해서는 안됩니다.

나는 인터페이스를 고려해 봤지만,이 인터페이스에 읽기 전용 객체를 캐스팅 한 다음 그 값을 변경 할 수 있다고 생각한다. (아마도 NHibernate가 그 인터페이스를 사용하여 객체를 하이드 레이팅 할 것이기 때문이다.)

다른 방법으로이 문제를 해결할 수도 있고 인터페이스를 통한 매핑을 통해 설명한 문제가 발생하지 않는다면 알려 주시기 바랍니다. 나는 NHibernate를 아직도 배우고있다.

다시 한번 감사드립니다!

답변

7

당신은 SchemaExport에서 읽기 전용 클래스 제외 할 수 있습니다

public class ReadonlyAdressMap : ClassMap<ReadonlyAdress> 
{ 
ReadonlyAdressMap() 
{ 
    Schemaaction.None(); 
    [...] 
} 
} 
2

나중에 편집 가능한 주소 및 읽기 전용 주소로 확장 할 하나의 기본 추상 클래스 엔터티를 만듭니다.

+0

안녕을 우리 모두가 편집 가능한 객체를 서브 클래 싱 한, 이것은 우리가 원하지 않는 정확히 무엇 인 검증 행동을 얻기 위해, 사용을 위해 작동하지 않습니다 읽기 전용 객체의 경우. 대답 해줘서 고마워. – Andy

+0

유효성 검사를 위해 객체를 서브 클래 싱하면 높은 천국의 냄새가납니다. – epitka

관련 문제