2009-12-11 3 views
1

검색 할 때 정렬되어야하는 다 대다 컬렉션을 매핑하기위한 가장 좋은 방법 (즉, 가장 간단하고 확실한 방법)을 찾으려고합니다. .NHibernate : 정렬 된 다 대다 관계를 매핑하는 방법

public class Person 
{ 
    private IList<AddressHistoryRecord> _addressHistory = new List<AddressHistoryRecord>(); 

    IList<AddressHistoryRecord> AddressHistory 
    { 
     get { return _addressHistory; } 
     set { return _addressHistory; } 
    } 
} 

public class AddressHistoryRecord 
{ 
    public Guid Id { get; set; } 
    public Guid AtAddressSince { get; set; } 
    ... 
} 

테이블은 다음과 같습니다 :

table t_Person { ... } 
table t_PersonAddressHistory { PersonId, AddressHistoryRecordId } 
table t_AddressHistoryRecord { Id, AtAddressSince ... } 

그래서 나는 사람의 주소 이력이 아이 에 따라 정렬 된 순서로 검색 가질 수 있도록하려면 다음

는 기본 엔티티와 테이블 AddressHistoryRecord 테이블의 AtAddressSince 컬럼. 최선의 선택은 무엇입니까?

답변

2

나는 나의 대다 매핑은 "idbag"를 사용하는 경향이 있지만, 아래의 예는 일반 가방과 함께 작동합니다

<idbag name="AddressHistory" table="t_PersonAddressHistory" lazy="true" cascade="all"> 
    <collection-id column="PersonAddressHistoryId" type="Int64"> <!--PersonAddressHistoryId is the t_PersonAddressHistory primary key. idbag requires the X table to have its own primary key. --> 
     <generator class="hilo" /> 
    </collection-id> 
    <key column="PersonId" /> 
    <many-to-many class="AddressHistoryRecord" column="AddressHistoryRecordId" order-by="AtAddressSince"/> 
</idbag> 

순서화는 다 대다 태그에서 발생 ..

idbag에 대한 더 자세한 정보는 NHibernate의 문서를 참고하십시오. 정상적인 가방에 비해 어떤 이점이 있습니까?하지만 이것은 당신의 질문과 관련이 없습니다.

관련 문제