2010-05-14 9 views
3

Я смотрю на перехватчик nhibernate. Кажется, что он способен перехватывать запросы сохранения, обновления и удаления, но в любом случае я могу перехватить выбранный запрос.nhibernate intercept select query

Проблема заключается в том, что я автоматически хочу добавить некоторые дополнительные sql-фильтры в исполняемый оператор sql в определенных случаях.

Любые мысли

Благодаря Mat рамки

ответ

2

Перехватчик только позволяет перехватывать операции сущностей, как сохранить, обновления и удаления. Сами запросы не перехватываются, только операции с сущностями (и выбор/просмотр не учитываются).

Рассмотрите возможность использования своего рода наследования для набора классов запросов, которые присоединяются к вашей ICriteria в соответствии с вашими потребностями.

0

Я думаю, вы можете сделать это с помощью пользовательского NHibernate persister; Однако, у меня возникают проблемы с поиском примеров того, как вы бы написать один ...

0

Вы можете использовать атрибут where на class тег:

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

Это полезно знать, единственная проблема заключается в их где предложения являются динамическими .. –

+0

@mjmcloug: True. Я фактически выбрал * not *, чтобы поместить эту логику в отображение, и я положил ее в «SoftDeletableRepository», который предлагает дополнительную функциональность над «Репозиторием»: 'SoftDelete',' DeletedEntities' и 'Entities' (уже был 'AllEntities' в классе' Repository'). Полученный репозиторий обрабатывает все, что реализует 'ISoftDeletable'. –