Exactly -Markus
2010/10/20 Alessandro C. <[email protected]>: > 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. > > -- 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.
