ENVERS:使用Fluent配置配置ValidityAuditStrategy

时间:2013-10-07 16:16:23

标签: c# nhibernate fluent-nhibernate nhibernate-envers

我试图让ENVERS(NHibernate的审计和日志记录工具)与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”列。然而,事实并非如此,我对接下来应该尝试的事情感到有些不知所措。

我的配置错了吗?或者是不可能有NHibernate创建的sql表(我在配置的最后一行执行此操作)。

感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:1)

您需要在调用IntegrateWithEnvers之前设置(envers)属性。我不太了解流利的nhibernate,但看看它看起来的代码在调用IntegrateWithEnvers之后设置了AuditStrategy。