Nhibernate Evers,如何更改 AuditJoinTable 名称

Nhibernate Evers, how to change AuditJoinTable name

我在此设置中使用流畅的 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);

我需要更改 AuditJoinTable 命名并添加前缀 XXX_

所有其他 table 具有相同的前缀,因此标准日志记录 table 继承了它,只有 JoinTable 没有

我找到了 java version 的设置,但没有找到 .net one

的设置

编辑: 现在我有 table 这个命名约定:

XXX_Table1
XXX_Table2

主日志table是用_LOG后缀创建的,所以我得到

XXX_Table1_LOG 
XXX_Table2_LOG 

AuditJoinTable 创建为

Table1Table2_LOG 

我需要

XXX_Table1Table2_LOG 

我通过将名称添加到每个连接 table 来解决这个问题。可以更通用,但它有效。

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

你的意思是cfg.SetEnversProperty(ConfigurationKey.AuditTablePrefix, "XXX_")不起作用?应该。

IEnversNamingStrategy 用于决定表的名称,默认使用 this one,其中 ConfigurationKey.AuditTablePrefix 用于“默认前缀”。如果你愿意,你也可以注入你自己的这个接口的实现。

使用 SetTableInfo 覆盖它并且肯定有效,但如果我理解正确的话,在这种情况下你不需要这样做。