2010-04-04 33 views
5

Tôi hiện đang sử dụng StructureMap để tiêm trường hợp của NHibernate ISessions sử dụng đoạn mã sau:Làm thế nào để xác minh StructureMap được xử lý các đối tượng đúng

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

Tôi giả định rằng các CacheBy (InstanceScope.PerRequest) sẽ đúng cách xử lý ISession nó tạo ra, nhưng tôi muốn chắc chắn. Cách dễ nhất để kiểm tra điều này là gì?

Trả lời

4

Ok, vậy theo StructureMap documentation:

Cũng lưu ý rằng StructureMap cung cấp không có chức năng để dọn dẹp nguồn lực của các đối tượng tổ chức bởi các chứa (Container.EjectAllInstances() sẽ rõ ràng ra đối tượng singleton). Để ngày, tôi không tìm thấy nhu cầu về hành vi hoặc chức năng này . Tôi thường giả định rằng sự kết hợp của bộ sưu tập rác cơ bản và thiết kế lớp thích hợp là đủ.

Tôi biết thực hành tốt nhất là gọi ISession.Dispose() khi sử dụng NHibernate, vì vậy tôi cần phải tự dọn dẹp bản thân hoặc đơn giản là dựa vào bộ sưu tập rác để làm điều đó cho tôi.

+1

Có, bạn cần phải dọn dẹp nó theo cách thủ công (không dựa vào GC). Xem http://trason.net/journal/2009/10/7/bootstrapping-nhibernate-with-structuremap.html –

Các vấn đề liên quan