在NHibernate中修改之前验证实体

时间:2014-02-11 16:01:03

标签: c# nhibernate fluent-nhibernate

我需要能够在执行对DB的任何修改(创建,更新,删除)之前验证实体上的一些业务规则,并在这些规则失败时抛出异常和回滚。我正在构建一个框架,我想要始终做到这一点,尽管用户是否使用我的类来修改实体或直接使用NHibernate Session。我还需要能够根据配置文件自定义这些业务规则。

我尝试继承DefaultSaveOrUpdateEventListener,覆盖PerformSaveOrUpdatePerformUpdatePerformSaveOrReplicatePerformSaveOnSaveOrUpdate和{{1}覆盖DefaultSaveEventListenerPerformSaveOrUpdatePerformSavePerformSaveOrReplicatePerformUpdate。我只是放了OnSaveOrUpdate,并调用了基本实现。我没有找到任何好的和详细的描述,所以我尝试了一切似乎我需要的东西。

我已经将它们初始化为:

Debug.WriteLine

但看起来这并不总是奏效。如果我修改对象树中的对象,由于某种原因,这些方法会捕获除根对象之外的所有对象。

我做错了什么?也许有更好的方法来做我想做的事情?

1 个答案:

答案 0 :(得分:1)

能够通过继承IPreUpdateEventListener, IPreDeleteEventListener, IPreInsertEventListener接口代替DefaultSaveOrUpdateEventListenerDefaultSaveEventListener来实现这一目标。

但是,如果有人更好地完成任务,我很想听。