2009-10-05 2 views
0

ID와 제목이있는 Article이라는 단 하나의 개체 (예제의 경우)가있는 CMS가 있다고 가정 해보십시오. 이 CMS 구현은 프레임 워크의 일부가되어 라이브러리로 사용됩니다 (예 : CMSFactory.CMS.SaveArticle (a);원본 매핑을 변경하지 않고 확장 개체에 대한 Nhibernate 질문

문제는 프로젝트 요구 사항에 따라 기사 개체가 SomeDate와 같은 필드가 더 많을 수 있다는 것입니다. 이 관계를 선언하고 기본 CMS 라이브러리를 변경하지 않고 (추가 매핑을 선언 할 수는 있지만) 모든 추가 (프로젝트 종속적) 필드로 기사를 저장하는 방법이 있습니까?

class SpecialArticleForThisProject: Article { 
    public DateTime SomeDate {get;set;} 
} 

을 그리고 three inheritance mapping strategies 중 하나를 사용하여 SpecialArticleForThisProject지도 :

답변

0

당신은 프로젝트의 특정 필드와 제의 서브 클래스를 만들 수 있습니다.

기본 CMS 라이브러리는 변경하지 않아도됩니다.

+0

이것은 내 원래 접근 방식이지만 신속하게 되돌릴 수 있습니다. 이러한 상속 매핑 전략에서 '테이블 당 구체적인 클래스'만 사용하면 원래 매핑/개체를 그대로 유지할 수 있습니다. 문제는 원래 매핑의 모든 속성을 포함하는 매핑 파일을 다시 작성해야한다는 것입니다. 테이블은 확장 개체를 나타내지 않고 모든 속성을 나타내므로 스키마도 변경됩니다. 나는 여기에서 완전히 벗어나고 있는가? – Yannis

+0

"서브 클래스, 유니온 서브 클래스 및 조인 서브 클래스 매핑을 별도의 매핑 문서에서 hibernate-mapping 바로 아래에 정의 할 수 있습니다. 이렇게하면 새로운 매핑 파일을 추가하는 것만으로 클래스 계층을 확장 할 수 있습니다. 이전에 매핑 된 수퍼 클래스의 이름을 지정하는 하위 클래스 매핑에서 extends 속성을 지정해야합니다. " 원래 매핑을 변경할 필요가 없습니다. –

관련 문제