2016-07-07 1 views
0

J'ai une relation parent/enfant Je suis mappé en XML. Une réservation peut avoir plusieurs paiements, donc mon modèle de réservation a un paiement IList {get; set;} propriété et je plaquant en XML comme ceci:NHibernate Appliquer le filtre au panier

<bag name="Payments" inverse="true"> 
    <key column="BookingId"/> 
    <one-to-many class="Payment, NHibernateOneToMany"/> 
</bag> 

Cela fonctionne très bien, mais maintenant je dois présenter le concept d'un soft-supprimer, donc je l'ai ajouté une colonne bool supprimée au paiement et je veux les paiements sur réservation pour ne contenir que les non-supprimés, donc je veux faire quelque chose comme ceci:

<bag name="Payments" inverse="true"> 
    <key column="BookingId"/> 
    <one-to-many class="Payment, NHibernateOneToMany"/> 
    <sql>SELECT * FROM Payment WHERE Deleted = 0 AND BookingId = bookingId</sql> 
</bag> 

J'ai regardé l'utilisation des filtres, mais ils semblent seulement offrir la possibilité d'utiliser le filtre si activé - Je veux que cette propriété exclue tous les éléments supprimés à chaque fois, donc il n'y a aucune chance qu'une erreur puisse b J'ai fait la ligne.

Quelle est la meilleure façon d'y parvenir?

Répondre

3

Vous pouvez utiliser le where simple du mappage de sac. Si Deleted est une propriété mappée sur le paiement, alors ce mappage devrait fonctionner:

<bag name="Payments" inverse="true" where="Deleted = 0"> 
    <key column="BookingId"/> 
    <one-to-many class="Payment, NHibernateOneToMany"/> 
</bag> 
+0

Parfait, merci. – littlecharva