0

在我的 Web 应用程序中,我将 StructureMap 配置为每个 HTTP 请求的单个数据库会话范围。

For<ISession>()
    .HybridHttpOrThreadLocalScoped()
    .Use(context => /* construct the session here */);

我现在有另一个类,每次构建它时都需要一个全新的会话。

public class NewClass 
{
    public NewClass(ISession session)
    {
        /* do some stuff with the session */
    }
}

如何配置 StructureMap 以便在调用时ObjectFactory.GetInstance<NewClass>()每次都会获得一个新会话?我想保持默认行为不变,以便我的所有其他类都为每个请求留下一个会话。

4

1 回答 1

1

StructureMap 有一个内置限制,即注册的接口只能有一个生命周期。您需要通过两个不同的接口来解决这个问题ISession

conf.For<INewSession>().Use(context => ...);
conf.For<ISession>().HybridHttpOrThreadLocalScoped().Use(context => ...);

whereNewClass将 aINewSession作为依赖项和

interface INewSession : ISession
于 2013-08-06T08:55:26.477 回答