Asp.net-Mvc
我的模型應該住在哪裡?Web 層還是數據層?(MVC + NHibernate)
我正在使用 MVC、Ninject 和 NHibernate(我第一次使用這些技術)設置一個 n 層應用程序。為了清楚起見,這些層是“數據”層、“服務”層和“Web”層(都是單獨的項目)。
使用 MVC,您的模型位於“模型”文件夾中。似乎有必要將我的模型放在這里以創建強類型視圖並通常與 MVC 哲學保持一致。
但是,對於 NHibernate,我還需要在“數據”層中使用我的模型,以便可以進行映射,並且 NHibernate 可以實例化實際對像以返回到服務層。
跨項目複製類並不是很乾,將它們抽像到自己的庫中似乎與 MVC 不兼容(無論是在實踐中還是在哲學上)。
有什麼想法嗎?您如何建構 O/RM 對象與 MVC 模型?
我將實體框架模型/類保留在數據層中,並將 MVC 項目的 Models 文件夾用於表示模型和模型綁定器。
數據模型是它自己的東西。MVC 中的模型有所不同。它是您要顯示的模型,可能是也可能不是您的數據模型。您的數據模型可能會超越層級,也可能不會。
以標準的系統資料庫單為例。數據模型可能包括使用者名、密碼和登錄歷史類數組、指示它處於活動狀態的標誌以及許多其他內容。MVC 中的模型,可能只關心使用者名和密碼,並且使用者輸入兩次密碼。您的數據模型真的需要兩個密碼欄位嗎?不,但是 MVC 中的模型可以。因此,兩種不同的小動物。