I'm struggling with the classical audit log problem. I'm using an NHibernate Interceptor to get called when anything is stored. We have a three tier architecture and the changes on the entities mostly occur outside of a session. Now I need to get the original values from the database to compare with.
NHibernate's cache is becoming a Nightmare. Here is what I tried until now: - Open another Session on the same transaction newSession = factory.OpenSession(OriginalSession.Connection) Problem: when I dispose the new Session, the transaction gets closed and my original session can't complete. It actually works if I just don't dispose the new session. But this does not seam to be a serious solution to me. - Open another Session with on a new connection newSession = factory.OpenSession() There are several problems with this. First, I can't use database isolations anymore. It will still be consistent with NHibernates optimistic locking, but we don't use this for all entities. The much bigger problem I have is that we use Sqlite for testing, where I can't open a new connection because Sqlite creates a new database for every connection. So I need to use the same transaction and get stuck with the problem above. - Calling LoadDatabaseSnapshot OriginalSession.GetSessionImplementation().GetEntityPersister(entity).GetDatabaseSnapshot(...) You probably can see that I really got desperate. Actually, it would be VERY NICE to have a method on the session like GetDatabaseSnapshot and you get a new instance of the entity, not from cache, but from the database. EntityPersister.GetDatabaseSnapshot has a big drawback. You get the "dehydrated" state of the entity. This would be actually even better than a real instance, because you don't need reflection to get the values. But you won't get any references or lists. So I would need subsequent queries to get them, which will be complicated (needs NH metadata inspection) and very slow. Any idea how to solve this problem would be much appreciated. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
