I have found that the session is not flushed before I perform a query using the criteria API, meaning that new objects for which I just called ActiveRecordMediator.Save are not returned by the query. I understand why this is (the INSERT is not performed until we flush the session), but a) it's surprising for most people. I understood that sessions got flushed automatically before each query. b) if I change the primary key of the type to PrimaryKeyType.Identity, this forces the Save to perform the INSERT to get the DB generated PK value, so the second query does return the new object
This was happening when I used a TransactionScope(TransactionMode.New, IsolationLevel.ReadCommitted, OnDispose.Commit). With the latest trunk code I can fix it by using a SessionScope(FlushAction.Auto). I tried various other combinations of transactions and sessions and couldn't find one where I had a transaction and had an auto flushing session. What is the right scope construction to give me what I want? I'm also worried by point (b), since a change to the code that isn't visible from the point where I'm making the query is going to affect the query results. Because the change is not locally visible, it's going to be pretty tricky to track down bugs caused by this. You can see tests that exhibit this behaviour here http://github.com/alexscordellis/nh-ar-oddities/blob/bf7d248b08394a1a8e2140c91112239dc5b6f045/NHOddities/FindingRecentlySavedEntitiesWithAQuery.cs You'll see examples with both types of primary key and with various types of session scope. All this behaviour is against a trunk build of Active.Record. My current project is using an older build (r5380), which is even worse as SessionScope(FlushAction.Auto) doesn't fix it. See wont_find_stuff_just_saved_without_flush_with_flush_mode_auto in http://github.com/alexscordellis/nh-ar-oddities/blob/c2ee96d334a89429e41342eec47675d882cf65d2/NHOddities/QueryUsingUnsavedEntity.cs Thanks for your help, Alex --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Castle Project Users" 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/castle-project-users?hl=en -~----------~----~----~----~------~----~------~--~---
