2009-03-04 7 views
7

J'essaie d'implémenter un référentiel à suppression de fichiers. Habituellement, cela peut être facilement fait avec un écouteur Delete Event. Pour filtrer les entités supprimées, je peux ajouter un attribut à ma correspondance de classe. Cependant, j'ai également besoin de mettre en œuvre deux autres méthodes dans le référentiel pour cette entité: Restaurer et Purger. La restauration va "annuler" les entités et Purge les supprimera. Cela signifie que je ne peux pas utiliser l'attribut Where (puisqu'il bloque les entités supprimées à la demande)Les filtres NHibernate ne fonctionnent pas avec Session.Get

J'ai plutôt essayé d'utiliser les filtres . Je peux créer un filtre et l'activer ou le désactiver dans la session pour obtenir le même résultat. Mais le problème est que les filtres n'ont aucun effet sur la méthode Session.Get (ils affectent uniquement l'accès basé sur ICriteria).

Des idées sur la façon de résoudre ce problème?

Merci

+0

avez-vous déjà trouvé une solution pour cela? – kmoo01

+0

Non. Les filtres ne fonctionnent pas sur Get. Ils n'affectent que les critères. J'ai dû implémenter une approche différente sur le référentiel de base uniquement pour Get et laisser Filter gérer les autres cas d'utilisation. – Khash

Répondre

2

citation de Fabio Maulo:

Par design.Filters ne fonctionnent pas avec Get ou charge car ils veulent dire: Je veux charge l'entité avec cet ID.

filtres dynamiques travaillent avec HQL/critères et Collection (où ont permis pour une collection) uniquement lorsque vous utilisez ou jointures explicites, plus générale, lorsque le QuerySpace d'un match de filtre avec le QuerySpace d'une requête.

0

consisterait le IInterceptor pour cela?

En regardant EmptyInterceptor, je trouve qu'il a un OnLoad que je pense que vous pourriez utiliser pour intercepter le chargement de l'objet.

Questions connexes