Thanks for chipping in. So are you suggesting that my understanding of how 
things *should* work (parent being saved before new child entities 
belonging to its collection are inserted) is correct and that it could 
simply be TransactionScope-related weirdness getting in the way? Will try 
to find time later today to test this on good old Sessions and perhaps come 
back with a sample solution if NH still does not behave "correctly".

Regards,
Dawid

On Wednesday, January 7, 2015 6:38:17 PM UTC+1, Ricardo Peres wrote:
>
> TransactionScope has some (OK, a lot of) problems with NHibernate... 
> https://nhibernate.jira.com/browse/NH-3568?jql=labels%20%3D%20TransactionScope
>
> RP
>
> On Wednesday, January 7, 2015 4:32:08 PM UTC, Dawid Ciecierski wrote:
>>
>> Thank you for your reply. No, we don't explicitly call Save or Flush; 
>> everything is manages automatically: using new TransactionScope() 
>> together with transaction.Complete(). It is indeed the case that Profile is 
>> an entity and not a component. However, I believe that such simple 
>> collection elements would fall under "collection elements" (step 4), while 
>> child entities should be serviced by step 3 + step 5.
>>
>> Regards,
>> Dawid
>>
>> On Wednesday, January 7, 2015 2:20:54 PM UTC+1, Oskar Berggren wrote:
>>>
>>> Are you calling Save() or similar on the new Profile? 
>>>
>>> Otherwise, it might be that Profile is an entity and therefore falls 
>>> under step 1 in the list. It's possible that step 5 "all collection 
>>> insertions" really means the relation records in a many-to-many-table. 
>>>
>>> /Oskar 
>>>
>>> 2015-01-07 12:04 GMT+01:00 Dawid Ciecierski <[email protected]>: 
>>> > Anyone? :-) Still having this problem and not sure how to proceed. 
>>> Will be 
>>> > grateful for any and all ideas! 
>>> > 
>>> > Regards, 
>>> > Dawid 
>>> > 
>>> > 
>>> > On Thursday, September 11, 2014 6:30:30 AM UTC+2, Dawid Ciecierski 
>>> wrote: 
>>> >> 
>>> >> This is a cross-post from StackOverflow, but doing it only because 
>>> the 
>>> >> original question did not get much attention (or answers). The 
>>> original post 
>>> >> can be found here; the gist is summarized below. 
>>> >> 
>>> >> According to NHibernate documentation, SQL statements are issued in 
>>> the 
>>> >> following order: 
>>> >> 
>>> >> all entity insertions, in the same order the corresponding objects 
>>> were 
>>> >> saved using ISession.Save() 
>>> >> all entity updates 
>>> >> all collection deletions 
>>> >> all collection element deletions, updates and insertions 
>>> >> all collection insertions 
>>> >> all entity deletions, in the same order the corresponding objects 
>>> were 
>>> >> deleted using ISession.Delete() 
>>> >> 
>>> >> We have two entities, Client and Profile, where Client owns and is 
>>> solely 
>>> >> responsible for its child collection of Profiles. Client makes use of 
>>> >> versioning. Via session interceptors we ensure that its version field 
>>> is 
>>> >> marked as dirty whenever its child collection changes. According to 
>>> the 
>>> >> above order, when a new Profile is added to Client we should see an 
>>> SQL 
>>> >> UPDATE for Client changing the version, and then an SQL INSERT for 
>>> the new 
>>> >> Profile. However, the following actually happens as observed via 
>>> >> ExpressProfiler: 
>>> >> 
>>> >> SELECT Id, Version 
>>> >>   FROM Clients 
>>> >>   WHERE Id='3F08F098-09C8-CE42-9594-39C9EAA21B64' 
>>> >> SELECT ClientId, ProductId, Score, Comment 
>>> >>   FROM ClientProfiles 
>>> >>   WHERE ClientId='3F08F098-09C8-CE42-9594-39C9EAA21B64' 
>>> >> INSERT INTO ClientProfiles (Comment, Score, ClientId, ProductId) 
>>> >>   VALUES ('some comment', 123, 
>>> '3F08F098-09C8-CE42-9594-39C9EAA21B64', 
>>> >> '487BC856-6EAF-42E2-ADD6-B3DE056EA714') 
>>> >> UPDATE Clients SET Version = 46 WHERE Id = 
>>> >> '3F08F098-09C8-CE42-9594-39C9EAA21B64' AND Version = 45 
>>> >> 
>>> >> The fact that the INSERT happens before the UPDATE is undesirable in 
>>> our 
>>> >> case as the infrastructure expects a StaleObjectStateException in 
>>> case 
>>> >> optimistic concurrency finds two processes modifying the same data. 
>>> We don't 
>>> >> really see why the order does not seem to follow documentation. Hence 
>>> hoping 
>>> >> that NH masters will have more ideas as to why this is happening! 
>>> Will be 
>>> >> grateful for any and all input that brings us a little closer to a 
>>> solution. 
>>> >> 
>>> >> (Class definitions and mappings can be found on StackOverflow.) 
>>> >> 
>>> >> Regards, 
>>> >> Dawid Ciecierski 
>>> > 
>>> > -- 
>>> > 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/d/optout. 
>>>
>>

-- 
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/d/optout.

Reply via email to