2009-12-11 7 views
1

J'essaie de trouver la meilleure méthode (c'est-à-dire la plus simple et la plus infaillible) pour mapper une collection many-to-many qui doit être triée lorsqu'elle est récupérée .NHibernate: Comment mapper une relation many-to-many triée

est ici l'entité de base et de la table:

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; } 
    ... 
} 

Les tables sont:

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

Je veux être en mesure d'avoir l'histoire d'adresse de la personne récupérée pour triés en fonction de l'enfant AddressHistoryRecord table AtAddressSince colonne. Quelle est ma meilleure option?

Répondre

2

J'ai tendance à utiliser « idbag » pour mes nombreux à plusieurs applications, mais l'exemple ci-dessous fonctionnera avec un sac normal:

<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> 

La commande arrive dans les nombreux à plusieurs .. tag

Consultez la documentation de NHibernate pour plus d'informations sur l'idbag et quels sont les avantages par rapport à la sacoche normale, mais cela n'est pas pertinent pour votre question.

Questions connexes