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 
> <http://stackoverflow.com/questions/25642429/nhibernate-saving-collection-elements-before-parent>;
>  
> the gist is summarized below.
>
> According to NHibernate documentation, SQL statements are issued in the 
> following order:
>
>    1. all entity insertions, in the same order the corresponding objects 
>    were saved using ISession.Save()
>    2. *all entity updates*
>    3. all collection deletions
>    4. all collection element deletions, updates and insertions
>    5. *all collection insertions*
>    6. 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.

Reply via email to