The only way I've ever gotten around this is doing a manual flush, but
usually I can refactor to have the actions be in different
transactions to order things correctly.

On Apr 1, 10:48 am, James Crowley <[email protected]> wrote:
> Just realised the issue is to do with the unique constraint. NHibernate
> seems to be trying to delete the child object *after* doing the insert for
> the new child... but because it has the same unique key elements, you break
> the unique constraint.
>
> Is there a way to force NHibernate to do the deletes first?
>
> Thanks
>
> James
>
> 2009/4/1 James Crowley <[email protected]>
>
>
>
> > I have a parent object which has a one to many relationship with an ISet of
> > child objects. When deleting a child object, *everything works fine*. But
> > when deleting a child object *and* adding a new child object in the same
> > transaction, the first child is not deleted.
>
> > I have the following in the parent object:
>
> > <set name="Pages" inverse="true" cascade="all-delete-orphan" 
> > access="field.camelcase-underscore">
>
> >     <key column="ContentId" />
>
> >     <one-to-many class="DeveloperFusion.Domain.Entities.ContentPage, 
> > DeveloperFusion.Domain, Version=1.0.0.0, Culture=neutral, 
> > PublicKeyToken=null" />
> > </set>
>
> > My code is as follows:
>
> > Content content = contentRepository.Get(1);
>
> > content.Pages.Clear();
> > //---
> > //If I un-comment this, everything works as expected
> > //NHibernateSession.Current.Flush();
> > //---
>
> > content.Pages.Add(new ContentPage("Some new title", 1, "Some content") });
> > NHibernateSession.Current.Update(content);
> > NHibernateSession.Current.Flush();
>
> > basically no delete statement is being executed for the page element that
> > has been removed. However, if I don't combine the adding and the deleting
> > (by uncommenting the Flush() statement) everything works fine.
>
> > What am I missing???
>
> > Thanks
>
> > James
>
> --
> James Crowley
> Managing Director
> Developer Fusion - Connecting developers worldwide
>
> Developer Fusion Ltd | 58 Sandringham Close | Enfield, EN1 3JH
> mob: 07986 624128 web:http://www.developerfusion.com/
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to