Nhibernate Evers,如何更改AuditJoinTable名称

Nhibernate Evers,如何更改AuditJoinTable名称,nhibernate,fluent-nhibernate,nhibernate-envers,Nhibernate,Fluent Nhibernate,Nhibernate Envers,我正在使用fluent Nhibernate和Envers进行此设置 var enversConf = new NHibernate.Envers.Configuration.Fluent.FluentConfiguration(); enversConf.Audit<Segnalazione>() IRevisionListener revListner = services.GetService<IRevision

我正在使用fluent Nhibernate和Envers进行此设置

var enversConf = new NHibernate.Envers.Configuration.Fluent.FluentConfiguration();

        enversConf.Audit<Segnalazione>()            

        IRevisionListener revListner = services.GetService<IRevisionListener>();
        enversConf.SetRevisionEntity<RevisionEntity>(e => e.Id, e => e.RevisionDate, revListner);
        cfg.SetEnversProperty(ConfigurationKey.AuditTableSuffix, "_LOG");
        cfg.SetEnversProperty(ConfigurationKey.AuditStrategy, typeof(CustomValidityAuditStrategy));

        cfg.IntegrateWithEnvers(enversConf);
主日志表是用_log后缀创建的,所以我得到

XXX_Table1_LOG 
XXX_Table2_LOG 

AuditJoinTable创建为

Table1Table2_LOG 
我需要

XXX_Table1Table2_LOG 

我通过向每个联接表添加名称来解决这个问题。可能更通用,但它是有效的

enversConf.Audit<Segnalazione>()
            .SetTableInfo(ug => ug.Foo, t => t.TableName = "XXX_Segnalazione_Foo")
enversConf.Audit()
.SetTableInfo(ug=>ug.Foo,t=>t.TableName=“XXX\u Segnalazione\u Foo”)

您是说
cfg.SetEnversProperty(ConfigurationKey.AuditTablePrefix,“XXX”)不起作用吗?应该这样

IEnversNamingStrategy
用于确定表的名称,在
ConfigurationKey处使用默认值。AuditTablePrefix
用于“默认前缀”。如果愿意,您还可以将自己的impl注入该接口


使用
SetTableInfo
会覆盖这一点,并且肯定会起作用,但如果我正确理解您的意思,在这种情况下您不需要这样做。

AuditTablePrefix为所有日志表设置前缀,我只需要自定义AuditJoinTable。我将在我的问题中添加示例此注释(AuditTablePrefix影响包括联接表在内的所有表)和您刚才在组织问题中所做的编辑(AuditTablePrefix不影响联接表?),它们不是说了不同的事情吗?总之-请使用
IEnversNamingStrategy
对您的表进行更多自定义命名。envers没有为所有表设置前缀,而是在数据表中手动从我这里设置前缀,因此audit表将继承它。joinTable不来自原始表名,因此没有前缀XOK,请使用
IEnversNamingStrategy
enversConf.Audit<Segnalazione>()
            .SetTableInfo(ug => ug.Foo, t => t.TableName = "XXX_Segnalazione_Foo")