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