0

问题有点含糊不好意思。我使用教程与 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 管理会话的解决方案- 在他的系列“重构无摩擦和无味代码”中。现在,目前PersistenceFacility负责创建 SessionFactory。我想知道我如何能够重构周围的东西(或者如果这甚至是必要的),所以我可以实现NHibernateActionFilter - 目前需要访问 SessionFactory 行:

sessionController.Session = sessionFactory.OpenSession();

也许我没有正确理解 Castle.Windsor,我不太确定。任何帮助表示赞赏!

4

1 回答 1

0

我想我有它,如果有的话,有点明显。将自己从屏幕上撬开并步行到商店有帮助!我应该只将 ISessionFactory 注入 NHibernateActionFilter 对吗?

    private static ISessionFactory sessionFactory;

    public NHibernateActionFilter(ISessionFactory sessionFactory)
    {
        sessionFactory = sessionFactory;
    }
于 2012-08-10T08:28:34.613 回答