Tôi đã tìm hiểu cách trả lời câu hỏi này. Phương thức ReleaseAndDisposeAllHttpScopedObjects()
được ObjectFactory trưng ra thực sự quan tâm đến HttpContext và do đó các ứng dụng web.
Lớp HybridLifeCycle từ không gian tên Structuremap.Pipeline cho phép truy cập trực tiếp vào các đối tượng được lưu trữ trong bộ nhớ ThreadLocal và xử lý chúng. Dưới đây là ví dụ:
Action.For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();
Mã trên đăng ký kiểu được cung cấp và lưu trữ các cá thể của nó trong lưu trữ HttpContext hoặc ThreadLocal. Nó luôn luôn là một ý tưởng tốt để kế thừa các loại từ IDisposable. Như vậy trong ví dụ này UnitOfWork cũng là một IDisposable.
new HybridLifecycle().FindCache().DisposeAndClear();
Bây giờ để xử lý các đối tượng được lưu trữ regardsless của một ứng dụng web hoặc cửa sổ dịch vụ đường dây trên là đủ để xử lý các UnitOfWork thay vì ReleaseAndDisposeAllHttpScopedObjects()
phương pháp. Tôi hi vọng điêu nay se giup được ai đo.
Bạn đã thử điều này chưa? Thế kết quả là gì? – thekip
Tôi không nghĩ là vậy. Tôi chỉ cho nó một thử và có một NullReferenceException mà tôi đoán là bởi vì không có một HttpContext. Vì vậy, Không, phương pháp đó chắc chắn không phải là cách thích hợp để phát hành phiên. – Roman