在 ServiceStack 应用程序中,我将 Funq 配置为为每个请求注入一个会话,如下所示:
container.Register<NHibernate.ISessionFactory>(sessionFactoryForDB1);
container.Register<NHibernate.ISession>(c => c.Resolve<NHibernate.ISessionFactory>()
.OpenSession())
.ReusedWithin(Funq.ReuseScope.Request);
我的服务看起来像这样,它工作得很好:
public class MyNhAwareService : Service
{
public ISession Session { get; set; }
public object Any(DoSomething request)
{
...
}
}
现在,当我想将第二个 NHibernate 数据库与它自己的会话工厂添加到混合中时,问题就出现了:
container.Register<NHibernate.ISessionFactory>(sessionFactoryForDB1);
container.Register<NHibernate.ISession>(c => c.Resolve<NHibernate.ISessionFactory>()
.OpenSession())
.ReusedWithin(Funq.ReuseScope.Request);
// add a different session factory
container.Register<NHibernate.ISessionFactory>(sessionFactoryForDB2);
我一直在尝试各种可以使用 Funq 的方法,当我发现“RegisterNamed()”方法时,我以为我已经找到了前进的方向,但这仍然无济于事,因为我不能使用任何东西我的服务中的 TryResolve() 除外。
这似乎应该是可能的,但我正在努力解决这个问题......任何建议将不胜感激。