2010-04-04 12 views
5

actualmente estoy usando StructureMap para inyectar instancias de NHibernate iSessions usando el siguiente código:Cómo comprobar StructureMap se Eliminación de los objetos correctamente

ObjectFactory.Initialize(x => 
{ 
    x.ForRequestedType<ISession>() 
     .CacheBy(InstanceScope.PerRequest) 
     .TheDefault.Is.ConstructedBy(y => NHibernateSessionManager.Instance.GetSession());  
}); 

Estoy asumiendo que el CacheBy (InstanceScope.PerRequest) hará correctamente deseche la ISession que crea, pero me gustaría asegurarme. ¿Cuál es la forma más fácil de probar esto?

Respuesta

4

Ok, por lo que de acuerdo con el StructureMap documentation:

También tenga en cuenta que StructureMap ofrece ninguna funcionalidad para la limpieza de recursos de los objetos en poder de los contenedor (Container.EjectAllInstances() se clara a cabo objetos singleton). A fecha, no he encontrado la necesidad de este comportamiento o funcionalidad . I generalmente asumo que una combinación de recolección básica de basura y el diseño apropiado de clase es suficiente.

Sé que es una buena práctica llamar a ISession.Dispose() cuando se utiliza NHibernate, por lo que o bien tengo que limpiarlo manualmente o simplemente confiar en la recolección de basura para hacerlo por mí.

+1

Sí, debe limpiarlo manualmente (no confíe en GC). Consulte http://trason.net/journal/2009/10/7/bootstrapping-nhibernate-with-structuremap.html –

Cuestiones relacionadas