2010-02-08 40 views
1

我最近發現了nhibernate會話範圍和上下文。它似乎似乎使用這個用於桌面應用程序就像使用ThreadStaticSessionContext引導配置一樣簡單,將會話工廠綁定到上下文,然後根據需要調用sessioonFactory.GetCurrentSession()。GetCurrentSession會話作用於桌面應用程序

我要找有經驗的開發者nhib可能有任何意見,建議,和/或重新鏈接:
(1)爲什麼這是或不是桌面應用程序
(2)單位一個好方法(3)當你想要一個IStatelessSession時怎麼做
(4)當應用程序需要web功能時,這是如何縮放的。

回答

1

1)您可能希望在會話範圍方面有更多靈活性。看看What should be the lifetime of an NHibernate session?更多的一些信息

2)您可能單元測試的代碼假設你抽象掉一個SessionFactory的電話,但同樣,我認爲你應該考慮會話範圍多一點

3)這是一個很好的問題,這個實現

4)你將無法使用Web應用程序的ThreadStaticSessionContext。您很可能想要爲此使用Session-Per-Request,在請求開始時創建一個新會話,並在最後處理它。

我會推薦使用DI抽象ISession的創建。如果你的代碼在執行代碼之前調用XYZ.GetCurrentSession(),那很糟糕。如果它正在創建一個新的會話(僅在當前上下文中使用),那很好。

+0

感謝您的答覆 - 在其他SO問題中的一些很好的信息。仍然讓我懷疑,上下文和GetCurrentSession可能更多,特別是ThreadStaticContext。乾杯 – Berryl 2010-02-09 02:33:57