2013-10-07 5 views
0

ENVERS (NHibernate 용 감사 및 로깅 도구)를 ValidityAuditStrategy 전략과 함께 작동 시키려고했으나 성공하지 못했습니다.ENVERS : Fluent 구성을 사용하여 ValidityAuditStrategy 구성

 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)); 

내가 감사 전략을 구성하는 여러 가지 방법이 있지만 기본 전략은 항상 사용됩니다 :

내 NHibernate에 (유창하게 사용 envers 확장 방법은) 다음과 같습니다. 유효성 전략을 사용할 때 생성 된 감사 테이블에는 추가 열 "REVEND"가 있어야합니다. 그러나 이것은 사실이 아니며 나는 다음에 시도해야 할 부분에 약간의 상실감이 있습니다.

구성이 잘못 되었습니까? 또는 NHibernate에 의해 생성 된 SQL 테이블을 가질 수없는 것입니까? (구성의 마지막 줄에서이 작업을 수행합니다).

도움을 주시면 감사하겠습니다. 감사합니다.

답변

1

IntegrateWithEnvers를 호출하기 전에 속성을 설정해야합니다. 유창한 nhibernate 잘 모르지만 보이는 코드를 보면 IntegrateWithEnvers가 호출 된 후에 AuditStrategy가 설정됩니다.

+0

감사합니다. 이유가 여기 있습니다. 그래서 간단합니다 :-) –