2009-11-29 37 views
1

我一直在使用nhibernate和asp.net mvc的ncommon框架(http://code.google.com/p/ncommon/)。我非常喜歡工作單元模式的實現,但是在我的視圖中存在延遲加載問題。我期待如何與ncommon實現每個請求模式會話或者看看另一個框架將支持:nhibernate和asp.net mvc的工作單元和每個請求的會話mvc

  1. 的LINQ to NHibernate的
  2. 單元的工作模式的
  3. 每個請求模式會話,以支持延遲加載意見

任何提示非常感謝。

回答

2

看看SharpArchitecture.net爲一個偉大的基於NHibernate的MVC框架,我相信會符合您的規範。

+0

謝謝邁克爾。我知道這個sharparchitecture框架,但是發現它就像使用原子彈殺死一隻老鼠;-)如果我記得尖銳的架構不使用linq provider – Chev 2009-11-30 06:16:02

+0

Ha。你可能是對的原子彈的東西!儘管如此,銳利的拱門卻擁有nhibernate linq提供者。 – 2009-11-30 11:34:53

+0

問題的核心是聽起來像你正在儘快關閉你的會議。通過session-per-request技術,您可以在Application_BeginRequest中的HttpApplication上下文中打開會話,並在Application_EndRequest中關閉它。你可以在Global.asax中做到這一點。夏普架構的源代碼可以給你如何做到這一點:-) – 2009-11-30 12:42:27

2

首先,如果你在你的視圖模型中使用你的實體,你做錯了。我很抱歉把它分解給你,但你不能真正在你的視圖中使用你的數據庫模型。如果我在數據庫中有一個比賽實體,我可能會根據我需要的3-4個比賽視圖結束。基本上我會加載所有我可能急切需要的東西,並只發送特定視圖所需的內容。

起初,這似乎是比嘗試用NHibernate解決它更多的工作,但最終我發現我馬上就獲得了大量時間。還有一個名爲AutoMapper的開源項目,可以在不同模型中的各個實體之間傳輸數據。

希望這會有所幫助,並且您絕對不會對最佳做法感到絕望!

+0

感謝您的答覆。 我在我的視圖中使用域實體。不知道我在我的意見中瞭解關於數據庫模型的聲明。 正如問題所述,我需要延遲加載我的視圖,並且不想急於加載。 ORM有這個功能是有原因的。急切地加載我的一些樹會導致性能下降,並會向客戶端發送大量不必要的數據。 – Chev 2009-11-30 06:27:10

+0

「你不能真正在你的視圖中使用你的數據庫模型」 - 這有點寬泛。如果您使用單個對象或對象的子集,則不需要創建視圖模型。我同意複雜的觀點,有幾個不同類型的對象或形式與下拉等需要填充,然後絕對創建視圖模型。 – 2009-11-30 12:10:48

相關問題