我试图让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表(我在配置的最后一行执行此操作)。
感谢任何帮助。 感谢
答案 0 :(得分:1)
您需要在调用IntegrateWithEnvers之前设置(envers)属性。我不太了解流利的nhibernate,但看看它看起来的代码在调用IntegrateWithEnvers之后设置了AuditStrategy。