2013-10-07 95 views
0

我試圖使ENVERS(NHibernate的審計和日誌記錄工具)與ValidityAuditStrategy策略一起工作,但我一直沒有成功。ENVERS:配置ValidityAuditStrategy使用Fluent配置

我NHibernate的(使用流利擴展envers法)看起來是這樣的:

 var fluentConfiguration = Fluently.Configure() 
              .Database(msSqlConfiguration) 
              .Mappings(m => 
              m.FluentMappings.AddFromAssemblyOf<MetaObject>()) 
              .Mappings(m => 
                m.FluentMappings.Conventions.AddFromAssemblyOf<MetaObject>()) 
              .ExposeConfiguration(cfg => 
              { 
               cfg.EventListeners.PreInsertEventListeners = 
                new IPreInsertEventListener[] { new SimpleAuditEventListener() }; 
               cfg.EventListeners.PreUpdateEventListeners = 
                new IPreUpdateEventListener[] { new SimpleAuditEventListener() }; 

               // ENVERS 
               cfg.IntegrateWithEnvers(GetEnversConfiguration()); // this is ok 
               // ENVERS Strategy 
               //cfg.SetProperty("nhibernate.envers.audit_strategy ", typeof(ValidityAuditStrategy).AssemblyQualifiedName); // does not work :-(
               cfg.SetProperty("nhibernate.envers.audit_strategy ", "NHibernate.Envers.Strategy.ValidityAuditStrategy"); // does not work :-(
               cfg.SetEnversProperty(ConfigurationKey.AuditStrategy, typeof(ValidityAuditStrategy)); // does not work :-(

              } 
      ).ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true)); 

我有不同的方式來配置審計策略,但總是使用默認的策略。當使用有效性策略時,創建的審計表應該有一個額外的列「REVEND」。然而,情況並非如此,我對接下來應該嘗試的事情有點失落。

我的配置錯了嗎?或者是不可能有由NHibernate創建的SQL表(我用配置的最後一行做這個)。

任何幫助表示讚賞。 謝謝

回答

1

您需要在調用IntegrateWithEnvers之前設置(envers)屬性。我不太清楚流利的nhibernate,但是在看到代碼後,審計策略會在調用IntegrateWithEnvers後設置。

+0

謝謝,就是這個原因。很簡單 :-) –