Can’t see anything wrong on what you’ve posted. If you don’t have the time to isolate your problem a bit more, I don’t know I’m afraid. Sorry.
You might want to take a look at Envers’ tests and see what differs to try to find out why they work but you have problems in your environment. If you do find the time to isolate your problem and it turns out it’s really a bug in Envers, please report it to the JIRA. Good luck! /Roger From: [email protected] [mailto:[email protected]] On Behalf Of Guilherme Paschoal Sent: den 18 februari 2014 18:38 To: [email protected] Subject: Re: [nhusers] [Envers] Query from different catalog Roger, Actually, I have to say I'm sorry first, I was only testing GetCurrentRevision... Other querys "work". * session.Auditer().GetCurrentRevision(false) returns Id = 0 and date = now; * session.Auditer().CrossTypeRevisionChangesReader().FindEntities(3,RevisionType.Modified) returns "query did not return a unique result: 3". Actually there are 2 records for revision 3 in RevChanges table. How should I execute this query? I'm doing it like it is said in the docs. * session.Auditer().GetRevisionNumberForDate(new DateTime(2014, 02, 17,15,55,03,503,DateTimeKind.Local)) returns "query did not return a unique result: 2". There's only one record in Revinfo for this exact datetime. * session.Auditer().GetRevisions(typeof (ItemDeConfiguracao), 1) returns 6 records (it looks like its something with it's query's inner/left join): * Name - Value * [0] - 1 * [1] - 3 * [2] - 4 * [3] - 1 * [4] - 3 * [5] - 4 This is my nhibernate session factory: public static ISessionFactory SessionFactory { get { try { if (_sessionFactory == null) { lock (SyncRoot) { _sessionFactory = Fluently.Configure() .Database(MsSqlConfiguration.MsSql2008.Dialect<CustomMsSql2008Dialect>() //.ConnectionString(c => c.FromConnectionStringWithKey("DBSQL_AUDIT")).ShowSql()) .ConnectionString(c => c.FromConnectionStringWithKey("DBSQL")).ShowSql()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateHelper>()) .ExposeConfiguration(ConfigurarEnvers) //.ExposeConfiguration(c => new SchemaExport(c).SetOutputFile(@"C:\Temp\scripteste.txt").Execute(true, true, false)) .BuildSessionFactory(); } } return _sessionFactory; } catch (FluentConfigurationException ex) { // Log.Fatal(ex); throw new Exception("Não foi possível conectar-se ao banco de dados. Favor entrar em contato com o administrador do sistema.", ex); } } } private static void ConfigurarEnvers(Configuration cfg) { var enversConf = new NHibernate.Envers.Configuration.Fluent.FluentConfiguration(); var rev = new RevInfoListener(); enversConf.Audit(Dominio.Classes.Helper.ObterSubClassesDeEntidadeBase()); cfg.SetEnversProperty(ConfigurationKey.TrackEntitiesChangedInRevision, true); cfg.SetEnversProperty(ConfigurationKey.DefaultSchema, "dbo"); cfg.SetEnversProperty(ConfigurationKey.DefaultCatalog, "DB_AUDIT"); cfg.IntegrateWithEnvers(enversConf); } And this is my Custom REVINFO class [RevisionEntity(typeof(RevInfoListener))] public class REVINFO : DefaultTrackingModifiedEntitiesRevisionEntity { public virtual string Usuario { get; set; } } RevInfoListener public class RevInfoListener : IRevisionListener { public void NewRevision(object revisionEntity) { var usuario = Thread.CurrentPrincipal.Identity.Name; ((REVINFO)revisionEntity).Usuario = usuario; } } And REVINFOMap. The value returned by configurationmanager.appsettings["BandoDeDadosAuditoria"] is "DB_AUDIT.dbo". It's the catalog and schema name. It's the way I found to force it uses the Audit database for querying, otherwise it will try to query from the Session's catalog. public class REVINFOMap : ClassMap<REVINFO> { public REVINFOMap() { var bdAudit = ConfigurationManager.AppSettings["BancoDeDadosAuditoria"]; Schema(bdAudit); Table("REVINFO"); Id(x => x.Id, "REV").GeneratedBy.Identity(); Map(x => x.RevisionDate, "REVTSTMP"); Map(x => x.Usuario, "Usuario"); } } Btw, The "Usuario" field is being inserted as NULL... It worked before I activated the TrackEntitiesChangedInRevision setting. And please don't ask me to post an Isolated Test or whatever... Our code is a total mess right now and for some freaking reason, an error is occurring when I try to open a session in test environment. We're on a total rush here. The company's president is on our asses these days. Yep, the president. thanks a lot in advance! On Tuesday, February 18, 2014 7:28:59 AM UTC-3, Roger wrote: AFAIK, that ”should” work. Is it one specific query that doesn’t work or is it all of them? How is your configuration object configured? From: [email protected]<javascript:> [mailto:[email protected]<javascript:>] On Behalf Of Guilherme Paschoal Sent: den 17 februari 2014 21:17 To: [email protected]<javascript:> Subject: [nhusers] [Envers] Query from different catalog Hello guys! I successfully got envers to work, saving to a different catalog. My problem is that unfortunately, querying from that catalog, won't work. It queries from the current session's catalog, not from the one I configured in "cfg.SetEnversProperty(ConfigurationKey.DefaultCatalog, "DB_AUDIT");". I've been searching around envers source but I couldn't find any tips on that. Anyone got that one working or has any tips for me? Thanks a lot in advance! -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]<javascript:>. To post to this group, send email to [email protected]<javascript:>. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]<mailto:[email protected]>. To post to this group, send email to [email protected]<mailto:[email protected]>. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/groups/opt_out.
