【发布时间】:2011-03-04 15:52:54
【问题描述】:
我有一个场景,我有两个 Nhibernate SessionFactory,我需要使用 StructureMap 注册一个用途。只有 Foo 需要 mySessionFactory 会话。
像这样:
For<ISessionFactory>().Singleton().Use(NHibernateConfiguration.GetDefaultSessionFactory());
For<ISession>().HybridHttpOrThreadLocalScoped().Use(x => x.GetInstance<ISessionFactory>().OpenSession());
For<ISessionFactory>().Singleton().Use(AnotherNHibernateConfiguration.GetDefaultSessionFactory).Named("mySessionFactory");
For<ISession>().HybridHttpOrThreadLocalScoped().Use(x => x.GetInstance<ISessionFactory>("mySessionFactory").OpenSession()).Named("mySession");
For<Foo>()
.Use<Foo>()
.Ctor<ISession>("session").Is(x => x.TheInstanceNamed("mySession"));
问题是,当我只想在 Foo 中使用 mySessionFactory 时,现在到处都在使用 mySessionFactory,而其他任何地方都应该使用我的未命名实例。
我做错了什么?
【问题讨论】: