2013-01-14 44 views
0

我有以下envers配置:Envers不節能審計,NHibernate的

 hibernateCfg.SetEnversProperty(ConfigurationKey.DefaultSchema, "audit"); 
     hibernateCfg.SetEnversProperty(ConfigurationKey.RevisionFieldName, "Rev"); 
     hibernateCfg.SetEnversProperty(ConfigurationKey.RevisionTypeFieldName, "RevType"); 
     hibernateCfg.SetEnversProperty(ConfigurationKey.AuditTableSuffix, "_Audit"); 

     var cfg = new FluentConfiguration(); 
     cfg.SetRevisionEntity<RevisionInfo>(x => x.Id, x => x.RevisionTimestamp, new RevisionListener()); 

     cfg.Audit<User>().Exclude(x=>x.Account).Exclude(x=>x.Agentie).Exclude(x=>x.Location).Exclude(x=>x.Produse).Exclude(x=>x.Roles); 
     //cfg.Audit<Account>().ExcludeRelationData(x => x.Users); 
     //cfg.Audit<Document>(); 

     hibernateCfg.IntegrateWithEnvers(new EnhancedAuditEventListener(), cfg); 

不創建審計表,並沒有數據被保存。我曾嘗試自己創建表audit.User_Audit,但沒有任何更改。我有nhibernate envers 1.30和nhibernate 3.3.1。

我是否需要其他配置才能完成此項工作?

+0

我看不到任何錯誤。你確定「hibernateCfg」是你構建你的ISessionFactory的配置嗎?實體用戶具有比您排除的更多屬性? – Roger

+0

是的hibernateCfg沒問題。問題出在用戶實體(下面解釋)。謝謝 – Catalin

回答

0

我解決了它。問題是我有一些派生類來自用戶(Like BrokerUser:User),我使用了鑑別器。我補充說:

cfg.Audit<BrokerUser>() 

問題解決了。