2010-08-27 6 views
1

Действительно ли это все, что мне нужно сделать для достижения сеанса за запрос с помощью Ninject?Управление сеансом NHibernate с Ninject

public class WebModule : NinjectModule 
{ 
    public override void Load() 
    {    
     Bind<ISession>().ToMethod(x => MvcApplication.SessionFactory.OpenSession()).InRequestScope();    
    } 
} 

Global.asax:

public class MvcApplication : NinjectHttpApplication 
{ 
    public static ISessionFactory SessionFactory = CreateSessionFactory(); 

    public static void RegisterRoutes(RouteCollection routes) { /* Routing Stuff */ } 

    protected override void OnApplicationStarted() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     RegisterRoutes(RouteTable.Routes); 
    } 

    protected override void OnApplicationStopped() 
    { 
     SessionFactory.Dispose(); 
    } 

    protected static ISessionFactory CreateSessionFactory() { /* session factory stuff */ } 

    protected override IKernel CreateKernel() 
    { 
     return new StandardKernel(new WebModule()); 
    } 
} 

Что плохого в этом? Это просто кажется слишком легким.

ответ

1

После прочтения this post Я решил не делать этого таким образом. Если кто-то не говорит, я просто сделаю это the old fashioned way.

+0

Приведенный пост является устаревшим (и был тогда тоже: D). См. Https://github.com/ninject/Ninject.Web.Common/wiki/InRequestScope. Сказав все это, нет никакого позора в ручном и явном виде. Устранение «ISession's в зависимости от того, что вы делаете». Выполнение и управление ваше подразделение работы, безусловно, что-то делать сознательно. –