Structuremap Disposing of DataContext object

自闭症网瘾萝莉.ら 提交于 2019-12-01 03:59:53

No it will not Dispose it automatically, unless you use nested containers and Dispose the container holding the context instance. It's up to the creator of the context to Dispose it. The creator would usually be the part of your code calling ObjectContext.GetInstance<MyDataContext> or the root method that makes StructureMap inject a DataContext into one of your objects.

A common practice is to create a context per HttpRequest and dispose the context at the end of the request.

That's what I do:

    For<IUnitOfWork>()
        .HybridHttpOrThreadLocalScoped()
        .Use<BpReminders.Data.NH.UnitOfWork>();

    For<ISession>()
        .HybridHttpOrThreadLocalScoped()
        .Use(o => ((BpReminders.Data.NH.UnitOfWork)o.GetInstance<IUnitOfWork>()).CurrentSession);

and ...

protected void Application_EndRequest(object sender, EventArgs e)
{
    ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}

HybridHttpOrThreadLocalScoped uses the HttpContext when available.

StructureMap looks after everything, then. Just remember to implement IDisposable in your classes.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!