有点模糊抱歉的问题。我使用教程与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,我不太确定。任何帮助表示赞赏!
答案 0 :(得分:0)
我想我已经拥有它,如果是这样的话,有点明显。把自己从屏幕上拉开,然后步行去商店帮忙!我应该把ISessionFactory注入NHibernateActionFilter吧?
private static ISessionFactory sessionFactory;
public NHibernateActionFilter(ISessionFactory sessionFactory)
{
sessionFactory = sessionFactory;
}