Hi everybody, As you may already know, I am porting Envers to .NET. In doing this I ran into several issues that need a very good internal knowledge of how NHibernate works. So I proposed my company to include in the project's budget costs for NHibernate consultancy for the Envers porting task. We need somebody with a good knowledge of how NHibernate functions internally to help with resolving issues like the following one, so, if anyone is interested, please contact me to discuss it more in detail.
This is the issue that I'm facing presently: on Envers initialization I do a transaction.RegisterSynchronization(My_ISynchronization_ImplementingClassInstance) (on AuditSyncManager.get) but this does not lead to calling the synchronization methods (Before and AfterCompletion). The problem seems to be that AdoTransaction's Commit method is not called at all. As a workaround, I tried to call the BeforeCompletion method manually, at the end of OnPost... method. This works for OnPostInsert but does not work on OnPostUpdate as it is called after ActionQueue's ExecuteActions and Flush throws an error if called. The test application instantiates NHibvernate through Spring.NET. Could this be because of Spring.NET? The Visual Studio 2008 solution can be found on SVN at: https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/sandbox/simondud/Envers.NET The unit test that reproduces the problem is HibernateStartedTest in NHibernate-Envers.tests project. Looking forward for your answers, Simon Duduica
