2010-08-10 4 views
0

새로운 도메인 모델을 고정 스키마 레거시 데이터베이스에 매핑하려고하고 있으며 특정 유형의 매핑을 수행하는 방법에 대해 고민하고 있습니다. 여기에 내 문제가있다.NHibernate - 보조 키로 매핑하는 가장 좋은 방법

근로자 유형이 있습니다. 예를 들어, HourlyWorker와 SalariedWorker.

HourlyWorker의 데이터는 WORKERS 테이블과 HOURLY_WORKERS 테이블에 WORKERS.PK_WORKERS = HOURLY_WORKERS.FK_WORKERS의 두 표준 표준 키 관계로 저장됩니다.

NHibernate의 관점에서 볼 때 HourlyWorker의 "Id"는 WORKERS.PK_WORKERS에 매핑됩니다.

지금까지 그렇게 좋았습니다.

이제는 시간제 근로자에게만 적용되는 개체가 있다고 가정합니다. 이것은 매우 간단하게하지만, 한 캐치와 함께 작업 표 테이블에 매핑되는 레거시 데이터베이스에서

class Timesheet 
    HourlyWorker Owner { get; private set; } 

: 소유자에 대한 외래 키 링크는 작업자 테이블에 대한 링크를 통해하지만에 대한 링크를 통해되지 표현된다 HOURLY_WORKER 테이블 즉, 외래 키 FK_HOURLY_WORKER는 고유 한 식별자이지만 이 아니며 NHibernate의 기본 키를 보는 값을 가리키는이 아닙니다.

시간당 근로자를 참조하는 데이터베이스의 70 %가 WORKER의 기본 키를 외래 키 ID로 사용하기 때문에 ID HourlyWorker를 HOURLY_WORKER 테이블로 매핑하기 만하면됩니다.

이 관계를 매핑하기위한 나의 옵션에는 어떤 것이 있습니까?

쉽게 만들 수있는 것 : Owner 속성은 읽기 전용이며 작업 표에는 소유자가 변경되지 않습니다. 그러나 HourlyWorker가 삭제되면 삭제 작업이 모든 작업 표로 캐스케이드되어야합니다.

마지막으로 데이터베이스 변경 권장 사항에 응답하지 마십시오. 알아. 제 의뢰인의 전화 번호를 원하면 그 스키마가 존재하는 것 중 가장 완벽한 것이 아니라는 것을 그들에게 확신 시키십시오. 그러면 제가 제공 할 수 있습니다. 나는 몇 달 동안이 싸움을 해왔다. 또한 문제가 NHibernate 매핑뿐만 아니라 관리적임을 나타내야한다고 응답하지 마십시오. 나도 알아. 지금 당장은 기술적 문제를 해결하는 방법에 대한 조언을 원합니다.

답변

2

나는 당신이 대일 요소의 property-ref 속성 속성을 찾고 있습니다 믿습니다 NHibernate docs

그런데, 기존 스키마에 대한 매핑이 어렵다 - 심각한 고통에 대비 ! 플러스 측면에서, 당신은 다른 측면에 나올 때까지 NHibernate 전문가가 될 것이다.

관련 문제