You need to register the factory facility. On Sun, Sep 20, 2009 at 10:15 AM, Martin Nilsson <[email protected]>wrote:
> Ok ok :) > > I changed to this instead: > Kernel.Register(Component.For<ISession>().LifeStyle.Transient.UsingFactoryMethod(() > => Kernel.Resolve<ISessionFactory>().GetCurrentSession())); > > but then I get error: > "Type NHibernate.ISession is abstract. > As such, it is not possible to instansiate it as implementation of > NHibernate.ISession service" > > My solution now is this (not causing the above error): > > ServiceClass: > ctor(IUnitOfWorkFactory unitOfWorkFactory) > > In ServiceMethod: > var session = unitOfWorkFactory.CurrentSession; > > Questions: > 1. Anyone knows why I get the above error? > 2. Is my other solution (using IUnitOfWorkFactory) better/ok then? > 3. You say that it's possible (better?) to take the ISession as a ctor arg. > Will that be a different one for each req if my service class is singleton, > although my session registration is transient? > > > On Fri, Sep 18, 2009 at 9:50 PM, Ayende Rahien <[email protected]> wrote: > >> This is HORRIBLE. >> You micro manage the session and remove from NH things like UoW, auto >> change tracking, persistence by reachability, etc. >> Sessions should be managed by request / context, not in methods. >> >> On Fri, Sep 18, 2009 at 4:25 PM, Martin Nilsson <[email protected]>wrote: >> >>> >>> ProductService: >>> public void Save(Product product) { >>> using(var session = ?.GetSession) >>> using(var tx = session.BeginTransaction()) >>> { >>> repository.Add(product); >>> tx.Commit(); >>> } >>> } >>> >>> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" 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/rhino-tools-dev?hl=en -~----------~----~----~----~------~----~------~--~---
