-1

我在这个设置中使用流利的 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_

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

我找到了java 版本的设置,但没有找到 .net 的设置

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

XXX_Table1
XXX_Table2

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

XXX_Table1_LOG 
XXX_Table2_LOG 

尽管

AuditJoinTable 创建为

Table1Table2_LOG 

我需要

XXX_Table1Table2_LOG 
4

2 回答 2

1

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

enversConf.Audit<Segnalazione>()
            .SetTableInfo(ug => ug.Foo, t => t.TableName = "XXX_Segnalazione_Foo")
于 2021-03-24T12:14:40.037 回答
0

你的意思是这cfg.SetEnversProperty(ConfigurationKey.AuditTablePrefix, "XXX_")行不通?它应该。

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

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

于 2021-03-24T20:36:09.353 回答