Yes. You have some strange ideas about unit of work. Let's start with the
basics and work up from there. What type of application is this - web, wpf,
wcf? Where are you starting the session? Where are you disposing it?


On Mon, Aug 16, 2010 at 9:54 AM, [email protected] <
[email protected]> wrote:

> Well, I'm at college at the moment, so I do not have the exact code, I
> will post that when I get home,
>
> In the meantime, here is what I can tell you.
>
> public void Update(T entity)
> {
>
> using (ITransaction tx = Session,BeginTransaction())
> {
> Session.Update(entity);
> tx.Commit();
>
> // see comment below on this line
> Session.Clear();
>
> }
>
> }
>
> ** I got the following code to work, but it requires the commented
> line above so that subsequent selects do not show the entity as being
> owned by two separate parents because of the NH caching. The db
> changes work.
>
> if (currentCategory != destinationCategory)
> {
> destinationCategory.AddForum(forum);
> categoryRepository.Updaet(destination);
> }
>
> So let ne refine my original question to this instead: is there a
> better way of refreshing things other than calling Clear()?
>
> On Aug 16, 8:40 am, Jason Dentler <[email protected]> wrote:
> > You need to perform the operation as a single unit of work. Don't flush
> the
> > session after each little piece.
> >
> > For the future, we really need to see your NH code, not your repository
> > abstraction on top of NH.
> >
> > On Sun, Aug 15, 2010 at 11:06 PM, [email protected] <
>  >
> >
> >
> > [email protected]> wrote:
> > > I have a relatively simple application where my main aggregate chain
> > > is: Category -> Forum -> Thread -> Reply.
> >
> > > My aggregate root repository is CategoryRepository natually.
> >
> > > I have AllDeleteOrphan set in my HasManyConvention so I can perform
> > > deletes like the following.
> >
> > > category.RemoveForum(forum);
> > > categoryRepository.Update(category);
> >
> > > Without it, all that happens is the foreign key get's nulled out, but
> > > the record remains. With it set, it works like it should. However, it
> > > introduces a problem in another action where I need to move a forum to
> > > another category. This code will demonstrate.
> >
> > > if (currentCategory != destinationCategory)
> > > {
> >
> > > // this seems to be needed so that the cache doesn't show the forum in
> > > both categories
> > > currentCategory.RemoveForum(forum);
> >
> > > // THIS LINE CAUSES THE ERROR. by the time it completes, the forum is
> > > an orphan and is deleted.
> > > categoryRepository.Update(currentCategory);
> >
> > > // now add it to the destination
> > > destinationCategory.AddForum(forum);
> >
> > > // and save it
> > > categoryRepository.Update(destinationCategory);
> >
> > > }
> >
> > > So the question is: what is the proper way to perform this operation?
> >
> > > --
> > > 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]<nhusers%[email protected]>
> <nhusers%[email protected]<nhusers%[email protected]>
> ­>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/nhusers?hl=en.- Hide quoted text -
> >
> > - Show quoted text -
>
> --
>  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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
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