我需要能够在执行对DB的任何修改(创建,更新,删除)之前验证实体上的一些业务规则,并在这些规则失败时抛出异常和回滚。我正在构建一个框架,我想要始终做到这一点,尽管用户是否使用我的类来修改实体或直接使用NHibernate Session。我还需要能够根据配置文件自定义这些业务规则。
我尝试继承DefaultSaveOrUpdateEventListener
,覆盖PerformSaveOrUpdate
,PerformUpdate
,PerformSaveOrReplicate
,PerformSave
,OnSaveOrUpdate
和{{1}覆盖DefaultSaveEventListener
,PerformSaveOrUpdate
,PerformSave
,PerformSaveOrReplicate
,PerformUpdate
。我只是放了OnSaveOrUpdate
,并调用了基本实现。我没有找到任何好的和详细的描述,所以我尝试了一切似乎我需要的东西。
我已经将它们初始化为:
Debug.WriteLine
但看起来这并不总是奏效。如果我修改对象树中的对象,由于某种原因,这些方法会捕获除根对象之外的所有对象。
我做错了什么?也许有更好的方法来做我想做的事情?
答案 0 :(得分:1)
能够通过继承IPreUpdateEventListener, IPreDeleteEventListener, IPreInsertEventListener
接口代替DefaultSaveOrUpdateEventListener
和DefaultSaveEventListener
来实现这一目标。
但是,如果有人更好地完成任务,我很想听。