2012-08-10 24 views
0

問題有點模糊不清。我使用教程與NHibernate和Castle Windsor建立了一個新項目。結果是一個PersistenceInstaller和一個PersistenceFacility。該PersistenceFacility有這樣的init()方法:使用Castle.Windsor的PersistenceFacility如何影響我實現NHibernateActionFilter的能力?

protected override void Init() 
    { 
     var config = BuildDatabaseConfiguration(); 

     Kernel.Register(
      Component.For<ISessionFactory>() 
       .UsingFactoryMethod(_ => config.BuildSessionFactory()), 
      Component.For<ISession>() 
       .UsingFactoryMethod(k => k.Resolve<ISessionFactory>().OpenSession()) 
       .LifestylePerWebRequest()); 
    } 

我碰到Ayendes解決方案來管理會話Here - 在他的一系列「對無摩擦,無臭代碼重構」。現在,PersistenceFacility負責創建SessionFactory。我想知道我如何能夠圍繞重構的事情(或者如果這甚至是必要的),這樣我就可以實現NHibernateActionFilter - 因爲這需要在該行獲得了一個SessionFactory:

sessionController.Session = sessionFactory.OpenSession(); 

也許我不是理解Castle.Windsor,我不太確定。任何幫助感謝!

回答

0

我想我有它,如果是這樣的話,有點顯而易見。把自己從屏幕上拉開,走到商店幫忙!我應該只注入ISessionFactory到NHibernateActionFilter的權利?

private static ISessionFactory sessionFactory; 

    public NHibernateActionFilter(ISessionFactory sessionFactory) 
    { 
     sessionFactory = sessionFactory; 
    }