2013-10-07 4 views
0

Я пытался сделать ENVERS (Audit and Logging Tool для NHibernate) работать со стратегией ValidityAuditStrategy, но я не был успешным.ENVERS: Конфигурирование ValidityAuditStrategy с использованием свободной конфигурации

Мои 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». Однако это не тот случай, и я немного потерял то, что я должен попробовать дальше.

Является ли моя конфигурация неправильной? Или невозможно создать таблицы sql, созданные NHibernate (я делаю это с последней строкой конфигурации).

Любая помощь приветствуется. Спасибо

ответ

1

Перед вызовом IntegrateWithEnvers вам необходимо установить свойства (envers). Я не знаю, как свободно говорить, но смотря на код, который выглядит как AuditStrategy, устанавливается после вызова IntegrateWithEnvers.

+0

Спасибо, это была причина. Так просто :-) –

Смежные вопросы