是否可以重载Session.Delete()
行为,以便不从数据库执行实际删除,而是将int State
列的值更新为特殊已删除的值?并且可以通过GetAll()
方法限制然后加载已删除的实体。
答案 0 :(得分:3)
这种删除称为软删除。您可以使用拦截器覆盖Session.Delete()
并在类映射上使用where
来定义公式,如:
<class where="State=0" ...>
Gabriel Schenker在nhforge.org上有一个例子:http://nhibernate.info/blog/2008/09/06/soft-deletes.html