Фильтры NHibernate не работают с Session.Get - PullRequest
7 голосов
/ 04 марта 2009

Я пытаюсь реализовать Soft-удаляемый репозиторий. Обычно это легко сделать с помощью прослушивателя Delete Event. Чтобы отфильтровать удаленные объекты, я могу добавить атрибут Где к своему отображению класса. Однако мне также необходимо реализовать еще два метода в хранилище для этой сущности: Restore и Purge . Restore будет «восстанавливать» сущности, а Purge будет их жестко удалять. Это означает, что я не могу использовать атрибут «Где» (поскольку он блокирует программно удаленные объекты для любого доступа)

Я пытался использовать фильтры . Я могу создать фильтр и включить или отключить его в течение сеанса, чтобы достичь того же результата. Но проблема в том, что фильтры не влияют на метод Session.Get (они влияют только на доступ на основе ICriteria).

Есть идеи, как решить эту проблему?

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

цитата из Фабио Мауло:

По замыслу. Фильтры не работают с Get или Load, так как они означают: я хочу загрузить объект с этим идентификатором.

Динамические фильтры работают с HQL / Criteria и Collection (где включены для коллекции) только при использовании явных объединений или, в более общем смысле, когда QuerySpace фильтра совпадает с QuerySpace запроса.

0 голосов
/ 13 июля 2011

Будет ли работать II-рецептор?

Глядя на EmptyInterceptor, я обнаружил, что у него есть OnLoad, который, я думаю, можно использовать для перехвата загрузки объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...