2009-03-04 16 views
7

Estoy tratando de implementar un repositorio de eliminación de software. Por lo general, esto se puede hacer fácilmente con un oyente Delete Event. Para filtrar las entidades eliminadas, puedo agregar un atributo Where a mi asignación de clase. Sin embargo, también necesito implementar dos métodos más en el repositorio para esta entidad: Restaurar y Purgar. La restauración borrará las entidades y Purge las eliminará. Esto significa que no puedo usar el atributo Where (ya que bloquea las entidades eliminadas por software para acceder)Los filtros NHibernate no funcionan con Session.Get

Intenté usar filtros en su lugar. Puedo crear un filtro y habilitarlo o inhabilitarlo dentro de la sesión para lograr el mismo resultado. Pero el problema es que los filtros no tienen ningún efecto en el método Session.Get (solo afectan el acceso basado en ICriteria).

¿Alguna idea de cómo resolver este problema?

Gracias

+0

¿alguna vez encontró una solución para esto? – kmoo01

+0

No. Los filtros no funcionan en Get. Solo afectan los criterios. Tuve que implementar un enfoque diferente en el repositorio base solo para Get y dejar que Filter manejara los otros casos de uso. – Khash

Respuesta

2

cita de Fabio Maulo:

Por design.Filters no trabajo con GET o de carga, ya que significan: Quiero carga de la entidad con este identificador.

filtros dinámicos trabajan con HQL/Criterios y Colección (donde permitieron para una colección) sólo cuando se utiliza une explícita o, más en general, cuando el QuerySpace de una coincidencia de filtro con el QuerySpace de una consulta.

0
qué un trabajo IInterceptor para este

?

En cuanto a EmptyInterceptor me parece que tiene un OnLoad que creo que podría utilizar para interceptar la carga de objetos.

Cuestiones relacionadas