2010-04-04 4 views
5

나는 현재 다음 코드를 사용하여 NHibernate에 ISessions의 인스턴스를 주입하는 StructureMap을 사용하고 개체를 폐기되어 있는지 확인하는 방법 :StructureMap가 제대로

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

내가 있으리라 믿고있어를 CacheBy (InstanceScope.PerRequest)가 제대로 것 생성 한 ISession을 처리해야하지만 확실히하고 싶습니다. 이것을 테스트하는 가장 쉬운 방법은 무엇입니까?

답변

4

좋아, 그래서 StructureMap documentation에 따라 :

또한 StructureMap가 제공하는 참고 용기 (Container.EjectAllInstances 보유 개체의 자원을 청소 어떤 기능() 것이다 분명 밖으로 싱글 톤 객체). (으)로이 (가) 행동이나 기능에 대한 필요성을 발견하지 못했습니다. I 은 일반적으로 기본 가비지 수집과 적절한 클래스 디자인의 조합으로 충분하다고 가정합니다.

NHibernate를 사용할 때 ISession.Dispose()를 호출하는 것이 가장 좋습니다. 수동으로 직접 정리하거나 가비지 수집을 사용하여 나를 대신해야합니다.

+1

네, 수동으로 청소해야합니다 (GC를 사용하지 마십시오). http://trason.net/journal/2009/10/7/bootstrapping-nhibernate-with-structuremap.html을 확인하십시오. –