首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StructureMap是否有对应于NInject的DefinesNamedScope/InNamedScope的作用域?

StructureMap是否有对应于NInject的DefinesNamedScope/InNamedScope的作用域?
EN

Stack Overflow用户
提问于 2011-03-03 17:57:19
回答 2查看 480关注 0票数 0

我想解决的问题是在IXyzRepositories之间共享一个ISessionProvider (其中ISessionProvider保存当前的NHibernate ISession)。

我正在调整NHibernate 3 Cookbook的“为每个演示者设置会话”的方法,并希望保留StructureMap (brownfield项目)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-04 06:16:54

我认为你必须创建一个自定义的生命周期来做到这一点,尽管我不确定你到底想要实现什么……

要创建自定义生命周期,您只需实现ILifecycle接口并在注册中使用它。下面是一个您可以查看的示例:http://blog.mikeobrien.net/2010/01/creating-structuremap-lifecycle-for-wcf.html

票数 1
EN

Stack Overflow用户

发布于 2011-03-04 17:40:03

在web应用程序中,我对sessionFactory使用单例,对会话使用HybridHttpOrThreadLocalScoped:这是我的结构映射注册表:

代码语言:javascript
复制
public class NhibernateRegistry: Registry
{
    public NhibernateRegistry()
    {
        For<ISessionFactory>()
        .Singleton()
        .Use(new NHibernateSessionFactory(connectionString).SessionFactory);

        For<ISession>()
        .HybridHttpOrThreadLocalScoped()
        .Use(o => o.GetInstance<ISessionFactory>().CurrentSession);
    }
}

我的NHibernateSessionFactory类似于书中使用的SessionProvider类。所有内容都在请求的末尾处理(web应用程序):

代码语言:javascript
复制
protected void Application_EndRequest(object sender, EventArgs e)
{
    ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}

我使用通用存储库:

代码语言:javascript
复制
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
    private readonly ISession _session;

    public GenericRepository(ISession session)
    {
        _session = session;
    }

    public T Load(Guid Code)
    {
        return (_session.Load<T>(Code));
    }

}

但您可以使用自己的实现轻松地更改它。我在这里注册存储库:

代码语言:javascript
复制
public class RepositoriesRegistry : Registry
{
    public RepositoriesRegistry()
    {
        For <Data.IRepository<Domain.Reminder, Guid>>()
            .HybridHttpOrThreadLocalScoped()
            .Use<Data.NH.Repository<Domain.Reminder, Guid>>();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5179121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档