2012-05-29 25 views
1

我有一個關於與從數據庫收到的實體工作的問題。 目前我有很多操作,我需要從db獲取實體,並將它們傳遞給另一個服務。這樣的代碼的簡化版本都是這樣的:流利Nhibernate處理會話後處理實體

List<Entity> list; 
using(var session = SessionFactory.OpenSession()) 
{ 
    list = Session.QueryOver<Entity>.Future().ToList(); 
} 

所以,現在我不知道,如果對象名單未設置很長一段時間,就會造成內存李爾accordint存儲會話。會話期間接收到的存在對象是否存在nhibernate會話?

更新

發現了一些會話設置Session.ActiveEntityMode - POCO,它解決了我的問題?

回答

2

會話在使用結束後立即處理。加載的所有實體仍然有效,除非未初始化的延遲集合/引用/屬性。

此外,Session.QueryOver<Entity>.Future().ToList();的未來是一個noop,當沒有其他操作befor有未來/ futurevalue對他們。

+0

謝謝,已經做了一些高負載測試來證明會話中的POCO模式。 –