Asp.net-Mvc

我的模型應該住在哪裡?Web 層還是數據層?(MVC + NHibernate)

  • October 19, 2009

我正在使用 MVC、Ninject 和 NHibernate(我第一次使用這些技術)設置一個 n 層應用程序。為了清楚起見,這些層是“數據”層、“服務”層和“Web”層(都是單獨的項目)。

使用 MVC,您的模型位於“模型”文件夾中。似乎有必要將我的模型放在這里以創建強類型視圖並通常與 MVC 哲學保持一致。

但是,對於 NHibernate,我還需要在“數據”層中使用我的模型,以便可以進行映射,並且 NHibernate 可以實例化實際對像以返回到服務層。

跨項目複製類並不是很乾,將它們抽像到自己的庫中似乎與 MVC 不兼容(無論是在實踐中還是在哲學上)。

有什麼想法嗎?您如何建構 O/RM 對象與 MVC 模型?

我將實體框架模型/類保留在數據層中,並將 MVC 項目的 Models 文件夾用於表示模型和模型綁定器。

數據模型是它自己的東西。MVC 中的模型有所不同。它是您要顯示的模型,可能是也可能不是您的數據模型。您的數據模型可能會超越層級,也可能不會。

以標準的系統資料庫單為例。數據模型可能包括使用者名、密碼和登錄歷史類數組、指示它處於活動狀態的標誌以及許多其他內容。MVC 中的模型,可能只關心使用者名和密碼,並且使用者輸入兩次密碼。您的數據模型真的需要兩個密碼欄位嗎?不,但是 MVC 中的模型可以。因此,兩種不同的小動物。

引用自:https://stackoverflow.com/questions/546782