Ok.
Your suggestion is:
One instance of Conversation per Form but not a ConversationScope
instance per Form.
I should create one instance of ConversationalScope when I need to
make some operation on the database. This operation could be the
simple save of one entity or a complex business operations that
involve more methods in different classes.
This is the same rule as the Transaction, isn't it?

So I can replace the TransactionScope with ConversationalScope?

Thanks again.


On 14 Ott, 00:14, José F. Romaniello <[email protected]> wrote:
> it was just pseudocode..-.-.-
>
> -Conversation = ScopedConversation.
> -ConversationACtion = ConversationScope.
>
> 2010/10/13 Alessandro C. <[email protected]>
>
>
>
> > I don't know ConversationAction, I have to read about it, but I guess
> > that all the three methods are inside the same transaction. I that
> > true?
>
> > On 13 Ott, 23:37, José F. Romaniello <[email protected]> wrote:
> > > Alessandro I am glad that my words help you, but let me help you a little
> > > more.
>
> > > That is a time bomb.
>
> > > Conversation could have a long live, and wait for user interactions, a
> > > ConversationScope is another thing and it should be short-lived, becouse
> > it
> > > often involves a db transaction.
>
> > > Maybe the names of the classes are confusing, you need to think in two
> > > differents things:
>
> > >    -Conversation
> > >    -ConversationAction
>
> > > what hapens if you write this kind of code:
>
> > > public class YourClass
> > > {
> > >   public IConversation conversation = new Conversation();
>
> > >   public void SomeMethod()
> > >   {
> > >     using(new ConversationAction(conversation))
> > >     {
> > >          SomeMethodInThisClass();
> > >          module.SomeMethodInOtherModule();
> > >          service.SomeMethodInOtherService();
> > >     }
> > >   }
>
> > > assuming that each of the afore mentioned methods does something with the
> > > db.
> > > What problem do you find with this usage?
>
> > > }
>
> > > 2010/10/13 Alessandro C. <[email protected]>
>
> > > > Josè thanks for the answers, you point me in the right direction (I
> > > > hope).
>
> > > > May be I found a solution:
>
> > > > If I create a ConversationalScope object in the form load (and dispose
> > > > it when the form closes) everything seems to be ok.
> > > > Of course If I need I can create a new ConversationalScope object for
> > > > transaction pourpose. Following the example.
>
> > > >        private void Form1_Load(object sender, EventArgs e)
> > > >        {
> > > >             conversational = new ConversationalScope(conversation);
> > > >            dataGridView1.DataSource = Fiber.FindAll();
> > > >         }
>
> > > > On 13 Ott, 22:57, José F. Romaniello <[email protected]> wrote:
> > > > > You are wrong, you don't have to pass the conversation from class to
> > > > class,
> > > > > and you don't need to surround every database call.
>
> > > > > Read the documentation:
>
> > > > > > SessionScopes are stored in a ThreadStatic stack
>
> > > > > You must be configuring something wrong.
>
> > > > > 2010/10/13 Alessandro C. <[email protected]>
>
> > > > > >  As far as I know you have 2 options:
> > > > > > or pass the conversation object from class to class
> > > > > > or surround every call to the database with new
> > > > > > ConversationalScope(conversation).
>
> > > > > > Just to show I built a simple project (following there is a part),
> > if
> > > > > > you uncomment the (new ConversationalScode....) it works otherwise
> > you
> > > > > > get a lazy error.
> > > > > > This is only a simple example, in the real world you often have a
> > > > > > database call inside a class of the class of the class etc, ect.
>
> > > > > >   public partial class Form1 : Form
> > > > > >    {
> > > > > >        protected IScopeConversation conversation = new
> > > > > > ScopedConversation(ConversationFlushMode.OnClose);
> > > > > >        public Form1()
> > > > > >        {
> > > > > >            InitializeComponent();
> > > > > >        }
> > > > > >        private void Form1_Load(object sender, EventArgs e)
> > > > > >        {
> > > > > >            dataGridView1.DataSource = Fiber.FindAll();
> > > > > >        }
> > > > > >        private void button1_Click(object sender, EventArgs e)
> > > > > >        {
> > > > > >            if (dataGridView1.SelectedRows.Count == 0)
> > > > > >                return;
>
> > > > > >            //using (new ConversationalScope(conversation))
> > > > > >            //{
> > > > > >                int id =
>
> > Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["FiberId"].Value);
> > > > > >                Fiber f = Fiber.Find(id);
>
> > > > > >                label1.Text =
> > > > > > f.CompositionFibers[0].Percentage.ToString();
> > > > > >            //}
> > > > > >         }
>
> > > > > > On 11 Ott, 20:10, José F. Romaniello <[email protected]>
> > wrote:
> > > > > > > I am not so familiar with the castle impl. because i use the
> > > > unhaddins
> > > > > > > version... But the pattern is the same and i dont think you need
> > to
> > > > > > > pass the iconversation all over your code.
>
> > > > > > > 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))
> > > > > > > > {
> > > > > > > > }
>
> > > > > > > > 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.
>
> > > > > > > > Is that correct or there is a way to share the conversation for
> > the
> > > > > > > > entire form thread?
>
> > > > > > > > Thanks,
> > > > > > > > --Alessandro
>
> > > > > > > > --
> > > > > > > > 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]<castle-project-users%2bun­[email protected]>
> > <castle-project-users%2bun­[email protected]>
> > > > <castle-project-users%2bun­[email protected]>
> > > > > > .
> > > > > > > > For more options, visit this group at
> > > > > > > >http://groups.google.com/group/castle-project-users?hl=en.
>
> > > > > > > --
> > > > > > > Enviado desde mi dispositivo móvil- Nascondi testo citato
>
> > > > > > > - Mostra testo citato -
>
> > > > > > --
> > > > > > 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]<castle-project-users%2bun­[email protected]>
> > <castle-project-users%2bun­[email protected]>
> > > > <castle-project-users%2bun­[email protected]>
> > > > > > .
> > > > > > For more options, visit this group at
> > > > > >http://groups.google.com/group/castle-project-users?hl=en.-Nascondi
> > > > testo citato
>
> > > > > - Mostra testo citato -
>
> > > > --
> > > > 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]<castle-project-users%2bun­[email protected]>
> > <castle-project-users%2bun­[email protected]>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/castle-project-users?hl=en.-Nascondi
> > testo citato
>
> > > - Mostra testo citato -
>
> > --
> > 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]<castle-project-users%2bun­[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/castle-project-users?hl=en.- Nascondi testo 
> >citato
>
> - Mostra testo citato -

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