2010-05-14 92 views
3

我在看nhibernate攔截器。它似乎能夠攔截保存,更新和刪除查詢,但無論如何,我可以攔截一個選擇查詢。nhibernate攔截選擇查詢

我遇到的問題是我自動想在某些情況下將一些附加的SQL過濾器附加到正在執行的sql語句中。

任何想法

感謝 墊

回答

2

攔截框架只允許你攔截像保存,更新實體操作,並刪除。查詢本身不被攔截,只有實體操作(並且選擇/查看不計數)。

考慮對一組查詢類使用某種繼承來追加到您的ICriteria以適應您的目的。

0

我認爲你可以用一個自定義的NHibernate持久化來完成;然而,我無法對你如何寫一個例子找到...

0

可以使用where屬性上class標籤:

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

這是很有必要知道,唯一的問題是,這些where子句是動態的。 – 2010-11-05 12:18:34

+0

@mjmcloug:對。我實際上選擇了* not *將這種邏輯放在映射中,並且將它放在SoftDeletableRepository中,該SoftDeletableRepository提供了'Repository'上的額外功能:'SoftDelete','DeletedEntities'和'Entities'(已經有了'Repository'類中的'AllEntities')。派生的存儲庫處理任何實現「ISoftDeletable」的東西。 – 2010-11-05 16:38:46