nhibernatefluent-nhibernatenhibernate-envers

Nhibernate Evers, how to change AuditJoinTable name


i'am using fluent Nhibernate and Envers with this setup

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

i need to change AuditJoinTable naming adding a prefix XXX_

All others table have same prefix and so standard logging table inherits it, only JoinTable hasn't it

i found settings for java version but not for .net one

EDIT: Now i have table with this naming convention:

XXX_Table1
XXX_Table2

main log table are create with _LOG suffix, so i get

XXX_Table1_LOG 
XXX_Table2_LOG 

while

AuditJoinTable are created as

Table1Table2_LOG 

and i need

XXX_Table1Table2_LOG 

Solution

  • I am solving this by adding the name to each join table. Could be more generic but it works.

    enversConf.Audit<Segnalazione>()
                .SetTableInfo(ug => ug.Foo, t => t.TableName = "XXX_Segnalazione_Foo")