使用Castle.Windsor的PersistenceFacility如何影响我实现NHibernateActionFilter的能力?

时间:2012-08-10 08:03:09

标签: asp.net-mvc-3 nhibernate castle sessionfactory

有点模糊抱歉的问题。我使用教程与NHibernate和Castle Windsor联系了一个新项目。结果是PersistenceInstaller和PersistenceFacility。 PersistenceFacility有一个像这样的Init()方法:

    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,我不太确定。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我想我已经拥有它,如果是这样的话,有点明显。把自己从屏幕上拉开,然后步行去商店帮忙!我应该把ISessionFactory注入NHibernateActionFilter吧?

    private static ISessionFactory sessionFactory;

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