Chúng tôi đang sử dụng NHibernate để quản lý sự kiên trì của chúng tôi trong một cửa sổ mô-đun phức tạp hình thức ứng dụng - nhưng một ý nghĩ cứ làm phiền tôi. Chúng tôi hiện đang mở một phiên khi khởi chạy và mở tất cả các đối tượng thông qua phiên đó. Tôi lo lắng rằng tất cả các đối tượng nạp được tải vào bộ nhớ cache phiên NHibernate, để họ không thể được thu thập rác, và cuối cùng chúng tôi sẽ kết thúc với toàn bộ cơ sở dữ liệu trong bộ nhớ. Điều này không bao giờ xảy ra với các ứng dụng web vì yêu cầu trang web (và thậm chí yêu cầu Ajax tốt hơn) đại diện cho giao dịch ngắn ngủi hoàn hảo để một phiên có thể được mở và đóng để xử lý từng yêu cầu.Làm cách nào để quản lý các phiên NHibernate trong một ứng dụng biểu mẫu Windows đã tồn tại lâu dài?
Tuy nhiên nếu tôi tải một cây đối tượng trong ứng dụng biểu mẫu của tôi và sau đó đặt vào ngăn điều hướng trên màn hình, chúng có thể giữ nguyên trạng thái của ứng dụng - và tại bất kỳ thời điểm nào người dùng có thể nhấp vào chúng mã của chúng tôi cần điều hướng các mối quan hệ đối tượng đến các đối tượng khác (chỉ hoạt động trong một phiên NHibernate).
Trình đọc StackOverflow làm gì để giữ các lợi ích của NHibernate mà không có các vấn đề tôi mô tả?
Đây là một bài viết có mẫu hay về cách triển khai phiên cho mỗi cuộc hội thoại trong ứng dụng kiểu máy tính để bàn: http://msdn.microsoft.com/en-us/magazine/ee819139.aspx –