2010-05-14 15 views
3

Je regarde l'intercepteur nhibernate. Il semble être capable d'intercepter les requêtes d'enregistrement, de mise à jour et de suppression, mais je peux quand même intercepter une requête de sélection. Le problème que j'ai, c'est que je veux automatiquement ajouter des filtres sql supplémentaires à l'exécution de l'instruction SQL dans certains cas.Interception nhibernate select query

Toutes les pensées

Merci Mat

Répondre

2

Le cadre intercepteur ne vous permet d'intercepter les opérations de l'entité comme enregistrer, mettre à jour et supprimer. Les requêtes elles-mêmes ne sont pas interceptées, seules les opérations d'entité (et sélection/affichage ne compte pas). Envisagez d'utiliser une sorte d'héritage pour un ensemble de classes de requêtes qui s'ajoutent à votre ICriteria en fonction de vos besoins.

0

Je pense que vous pouvez accomplir cela avec un persistant NHibernate personnalisé; cependant, je vais avoir du mal à trouver des exemples sur la façon dont vous écririez un ...

0

Vous pouvez utiliser l'attribut where sur l'étiquette class:

<class name="MyClass" where="deleted=0"> 
    ... 
</class> 
+0

qui est utile de savoir, le seul problème est ces où les clauses sont dynamiques. –

+0

@mjmcloug: True. J'ai opté * non * pour mettre ce type de logique dans le mapping, et je l'ai mis dans un SoftDeletableRepository qui offre des fonctionnalités supplémentaires par rapport à Repository: SoftDelete, DeletedEntities et Entities (il y avait déjà un 'AllEntities' sur la classe' Repository'). Le référentiel dérivé gère tout ce qui implémente 'ISoftDeletable'. –