Markus,

All is clear but the use of the method Execute.

Suppose that I have a static helper class called PlanningProcess, this
class has a method called GoAhed, inside this method there are
controls, calculations and entity updates.
Now, that I have a global session, I call from my form as follow (note
that before saving or updating the entities I create a
TransactionScope object):
PlanningProcess.GoAhead(planning);

After using the conversation pattern I can use:
conversation.Execute(() => PlanningProcess.GoAhed(planning))

or
using(new ConversationalScope(conversation))
{
  PlanningProcess.GoAhed(planning);
}

and if I understand well I can remove the TransactionScope object
because the conversation handles its own transaction
is that true?

--Alessandro

On 19 Ott, 08:32, Markus Zywitza <[email protected]> wrote:
> Hi Alessandro
>
> I've been in offline land for a couple of days...
>
> 2010/10/11 Alessandro C. <[email protected]>:> Following the 
> example of Markus
>
> >http://using.castleproject.org/display/AR/Using+the+Conversation+Pattern
>
> > I tried to change my application from single global session to a
> > session per conversation but every time you need to hit the database
> > you have to surround the operation with
> > using (new ConversationalScope(conversation))
> > {
> > }
>
> That's right and therefore you should only hit the database at defined
> points in you code. But (and that's the benefit of Conversation) is
> that the NH session lives as long as the conversation, so you can
> access lazy loaded properties without using a scope and thus benefit
> from binding mechanisms in the GUI framework.
>
> > more, if you have database access outside the form, for example a
> > method on a helper class, you have to pass the conversation to the
> > class if you want that method use the same conversation as the form.
>
> Can you share an example for this. I always call helpers from my form
> objects, and use conversation.Execute(()=>helper.Help()) for this.
> That way, the helper can call ActiveRecord methods within my
> conversations session.
>
> > Is that correct or there is a way to share the conversation for the
> > entire form thread?
>
> If you use SessionScope, you always share the session for the entire
> thread (in rich clients), but this was the problem that made me
> develop the conversation feature. If you have more than one form, all
> run in the same thread, so you either have session per application
> (boom) or you get ScopeMachineryExceptions (boom) when you have a
> session per form.
>
> -Markus

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

Reply via email to