2010-06-02 5 views
2

Fluent N-Hibernate를 사용하여 N-Hibernate로 매핑 할 기존 데이터베이스를 리버스 엔지니어링합니다.Fluent NHibernate 조인 테이블 매핑

어떻게 매핑 할 수 있습니까?

주소 테이블

아이디
주소 1
주소 2

Person 테이블

아이디
먼저
마지막

유형

아이디
는 유형 이름

PersonAddress 테이블

아이디

PersonId (사람 테이블에서 Id)을

AddressId (주소 테이블에서 Id)을 (사람은 가정, 비즈니스 등의 주소를 가질 수 있습니다)

유형 ID (유형 ID 조회 테이블 홈, 사업 등등)

도움이 될 것입니다. 감사합니다

위의 매핑 외에도 또 다른 까다로운 방법이 있습니다. 지도를 작성하는 것이 얼마나 쉬운 지 모릅니다. 사람에

파티 테이블

아이디 사람 아이디 점

식별자 테이블

아이디 파티 아이디 유형 ID 식별자 값

Employee 테이블

직원 번호 파티 또는 사람 t 능력이 테이블에 외래 키가 있습니다. 직원 ID는 식별자 테이블에 저장됩니다. 그래서 예를 들면. 식별자 테이블은 여러 유형의 값을 저장하는 데 사용됩니다. 주어진 당사자의 식별자는 DriverLicense, EmployeeId, SSN, 신용 카드 번호 등이 될 수 있습니다. 이는 많은 값이 될 수 있습니다.

샘플 식별자 데이터

이드 PartyId, 유형 ID, IdentifierValue

1, 1, 1, EMPLID-1234 2, 2, 1, EMPLID-4567 3, 3, 1, EMPLID- 34354

나는이 문제를 해결하기 위해 머리를 터지려고 노력하고 있으며 매핑 할 수 없습니다.

답변

4
// this answer assumes you have functional Address, Person, Type, and PersonAddress objects. 

public class AddressMap : ClassMap<Address> 
{ 
    public AddressMap() 
    { 
    Id(x=>x.Id); 
    Map(x=>x.Address1); 
    Map(x=>x.Address2); 
    } 
} 

public class PersonMap : ClassMap<Person> 
{ 
    public PersonMap() 
    { 
    Id(x=>x.Id); 
    Map(x=>x.First); 
    Map(x=>x.Last); 
    } 
} 

public class TypeMap : ClassMap<Type> 
{ 
    public TypeMap() 
    { 
    Id(x=>x.Id); 
    Map(x=>x.TypeName); 
    } 
} 

public class PersonAddressMap : ClassMap<PersonAddress> 
{ 
    public PersonAddressMap() 
    { 
    Id(x=>x.Id); 
    References(x=>x.Person, "PersonId"); 
    References(x=>x.Address, "AddressId"); 
    References(x=>x.Type, "TypeId"); 
    } 
} 
+0

위대한 작품입니다! 모든 도움에 감사드립니다. – Rusty

+0

하지만 실제로는 테이블을 조인하지 않으므로 각 하위 개체에 대한 개별 쿼리를 만들기 때문에 성능에 영향을 미치게됩니다. – Nexxas