First, guys i would like to thank you for answering my previous post
about "Session Management". Information you gave was really helpful.
Now i need help on related problem.. so

Situation: I have a WinForms app with MVP pattern applied, and i have
2 simple Views in it:
1) Showing Product list (lets call it "List View"),
2) Edit\Add Product View (lets call it "Editor View")
I'm using Session-Per-Presenter pattern in this App.

The Problem: I can't update entities passed from one presenter to
another, as you may guess I'm getting "Illegal attempt to associate a
collection with two open sessions" Exception.

Well you can say that this is Session management problem, but i will
disagree with you, it's my MVP implementation problem. (You may wonder
why I'm posting this question here then, well i don't know other
places where someone use Nhibernate with MVP, and you have nice
examples in uNhAddIns)

The problem is how i pass Product which need to be edited to Editor
View:
I'm currently do it like this:
        void EditProductClicked(object sender, EventArgs e)
        {
                IProductEditorView EditorView = IoC.Get<IProductEditorView>();
                EditorView.Product = Model.GetRepository<Product>().SingleBy(t 
=>
t.id == View.CurrentProduct.id);
                //I can do EditorView.Product = View.CurrentProduct but the 
result
will be the same anyway this entity is loaded in this presetner and
ISession
                IoC.Get<IViewManager>().ActivateView<IProductEditorView>
(IProductEditorView);
        }

How to pass data between Views? I read lots of materials on MVP (All
blog's i could find, book "Architecting Microsoft® .NET Solutions for
the Enterprise" there is whole chapter on MVP there, but no where i
could find info about MVP triad communication, the only article that
tries to cover this topic somehow is "Humble Dialog Box V2" but even
there author don't pass data from main view to child view. (i was very
disappointed about it)

I understand my problem but i can't find good way to solve it.
I don't want to expose Presenters to other Presenters, ie i don't want
to do:
IoC.Get<IProductEditorView>().Presenter.SetProduct
(View.CurrentProduct) //and load this product on other side from
Model.

I would appreciate any help, I'm struggling with MVP+NHibernate for
more then 170 hours already.

--

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