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

Reply via email to