我需要能夠在對數據庫進行任何修改(創建,更新,刪除)之前驗證實體上的一些業務規則,並在這些規則失敗時拋出異常和回滾。我正在構建一個框架,並且我總是這麼做,儘管用戶是使用我的類來修改實體還是直接使用NHibernate Session。我還需要能夠定製這些業務規則,具體取決於配置文件。驗證NHibernate中修改前的實體
我試圖繼承DefaultSaveOrUpdateEventListener
,覆蓋PerformSaveOrUpdate
,PerformUpdate
,PerformSaveOrReplicate
,PerformSave
,OnSaveOrUpdate
和DefaultSaveEventListener
與壓倒一切的PerformSaveOrUpdate
,PerformSave
,PerformSaveOrReplicate
,PerformUpdate
,OnSaveOrUpdate
。我只是把Debug.WriteLine
,並稱爲基地實施。我沒有找到任何好的和詳細的描述,所以我嘗試了一切,看起來像我需要的東西。
而且我喜歡這個初始化它們:
configuration.EventListeners.SaveOrUpdateEventListeners[0] = new SaveOrUpdatePermissionListener(_mappingContext);
configuration.EventListeners.SaveEventListeners[0] = new SavePermissionListener(_mappingContext);
不過貌似這並不總是工作。如果我修改對象樹中的對象,由於某些原因,這些方法會捕獲除根對象以外的所有對象。
我做錯了什麼?也許有更好的方式做我想做的事情?
找到了這個網站,如果有幫助:http://codebetter.com/petervanooijen/2015/04/13/using-nhibernate-eventlisteners-to-validate-and-audit-data/ – shankbond