This seems to be related to the following topics on the dev list, but I can't follow those threads to a complete conclusion that would answer my question
http://groups.google.com/group/castle-project-devel/browse_thread/thread/1707d8cdeecc3869/94a577f3d9eb4114?lnk=gst&q=flush#94a577f3d9eb4114 http://groups.google.com/group/castle-project-devel/browse_thread/thread/ba6c3963f7c4532b/fd3171b7f32d79f9?lnk=gst&q=flush#fd3171b7f32d79f9 2009/6/10 Alex Scordellis <[email protected]>: > 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 -~----------~----~----~----~------~----~------~--~---
