Hm, I think the first part of the blog describes the how and why of the pattern well enough
http://fabiomaulo.blogspot.com/2008/12/conversation-per-business-transaction.html But I think, it will not fit in every scenario of a winform application or maybe I didn't understand all of it :-). The problem i have is, for example if it comes to lazy loading. Simply think of two views, one shows a list of data and the other one details for the selected entity, with lazy loaded attributes. The two views are independed of each other and part of independend use cases. But while both usecases may be instantiated from one parent usecase they may also be instantiated standalone. So the lifetime of a specific repository may span several usecases or just one, if you want to avoid multible queries for the same entity. My approach to this is to use a PersistenceContext. Every usecase may instantiate it's own PersistenceContext or may use the PersistenceContext, provided by the CallingContext. So i'm able to simply control the lifetime of the Repository. Since the views are controlled by the usecase they simply use the Repository provided by the PersistenceContext. So, if the user wants to edit an entity from the list, this starts a new usecase with a modal view and an own PersistenceContext. If this transaction fails, it has nothing to do with the already displayed entity. If is is commited succesfully, i just have to refresh the entity in the "main" context. I don't know if this is a good approach, but it works really nice for me. And since informations about NH and WinForms are really rare and even the NHiA book doesn' really tell something about it, i'll stick to it :-) 2009/8/23 ChrisHolmes <[email protected]> > > I am not interested in Castle ActiveRecord. > > I'm interested in actually learning how to accomplish my goals. I'll > write my own bits to accomplish my tasks, but I need to understand how > and why things work, and how they should be done. > > I don't have an understanding of HOW to actually manage the NHibernate > ISession in a WinForm application. No one cares to explain that. I > don't understand how, when I do have an ISession managed, how I use > that in something like a Repository, which is code that will live much > closer to the DB than a higher level WinForm controller. No one cares > to explain that either. > > I've read a whole lot of theoretical stuff about session-per- > conversation, but no one actually takes any time to describe the how > and way and actually show the usage. It's very discouraging. > > -Chris > > On Aug 22, 12:11 pm, Raul Carlomagno <[email protected]> wrote: > > you can try castle activerecord too, it abstracts a little NH Sesion > > artifact > > > > On Aug 22, 1:25 pm, ChrisHolmes <[email protected]> wrote: > > > > > Hey gang, > > > > > I'm trying to figure out the best way to handle the NHibernate session > > > in a WinForm scenario. I've Googled this to death and I still can't > > > find anything that makes sense and I haven't found any actual code > > > that I can read and make sense out of. I've read a lot about Session- > > > per-Request and at the conceptual level it makes sense, but I haven't > > > seen code that makes sense (and the context for this pattern is often > > > web, which doesn't work for me). > > > > > If anyone has any suggestions or best practices, particularly any code > > > or pseudo code that I can read to get a clear understanding of the > > > parts involved and how they interact, I'd appreciate it. > > > > > Details about my application: From the application point of view, it's > > > easy for me to create boundaries for a unit of work. I basically have > > > a controller class that is responsible for creating/managing views in > > > a MVP fashion, and then handling some elementary coordination. So the > > > controller works as a pretty good UoW boundary; it's very feature > > > specific. But what I can't figure out is how the NHibernate session is > > > actually best managed in this scenario, how the abstractions are > > > handled, and how the session relates to other things that need to make > > > use of it (like a Repository). > > > > > I'm using StructureMap for IoC, and I'd really like to take advantage > > > of that. This is something that is in the greenfield arena, and in the > > > very beginning phases of development, and I want to make good > > > decisions about this design up-front. > > > > > Appreciate any help anyone can lend. > > > > > -Chris > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
