2013-06-26 149 views
0

在閱讀文章和使用MVC項目時,我發現使用了各種方式的術語「模型」,並且希望能夠理解下面術語的含義。有些可能是同義詞。有些可能與實體框架和/或DDD有關。MVC「模型」術語

  • 型號
  • 視圖模型
  • 領域模型
  • 實體模型

我很感激在定義什麼是(最有可能)被稱爲當這些短語是任何輸入用過的。

+0

可能重複的[什麼是MVC模式中的「模型」?](http://stackoverflow.com/questions/8085970/what-is-the-model-in-the-mvc-pattern ) – 0lukasz0

+0

http://stackoverflow.com/questions/1175932/what-exactly-is-the-model-in-mvc – 0lukasz0

回答

3
  • 模式可以指作爲概念模型的任何東西(與我一起承擔)。 A * Data * Model是數據庫外觀的概念模型。

  • 查看模型。一個不整齊地映射到DataModel中的實體的實體。通常,當您想爲下拉列表添加諸如可選值列表之類的東西時,您將使用ViewModel。或者當您想要將額外信息添加到要發送到視圖的模型中時。或者,不那麼容易混淆的是,ViewModel是一個由不同數據實體組成的自定義項目,並且不會以通常的MyEntities.SaveChanges()方式保存到數據庫,而是需要您檢索需要保存的位。

  • 域模型。 DataModel和Controller之間的額外層。一個領域模型可以最容易地描述爲收銀員,他可以通過您的訂單進行交易。你問她一件物品,她決定細節是什麼,以及你是否被允許獲得該物品。

  • 實體模型。一組代表您的數據庫表,視圖和存儲過程的類。當一篇MVC文章談論這個模型時,通常是參考實體模型。

+0

謝謝胡安。這絕對會消除一些不確定性。模型是一個通用/抽象的術語,用於討論模擬數據的任何種類的類。實體模型是直接表示數據源對象的類。 我想我仍然在試圖確定View模型和Domain模型之間有什麼不同。據我所知,術語「域」推斷業務邏輯的應用。視圖模型是否不包含任何業務邏輯?只是表示邏輯?在View模型和包含業務邏輯的實體模型之間是一個Domain模型的另一個層? – im1dermike

+0

ANy模型可以包含任何你喜歡的東西,但是你應該在你的領域模型中保留商業規則,並且只使用你的視圖模型來打包和傳遞數據到你的視圖,這就是它被稱爲視圖模型而不是ViewBuilderModel的原因。 –

-2

視圖模型:用於定義這必將像文本框,列表,標籤等一些UI元素屬性/字段

型號:用於書寫前端處理邏輯等保存數據,計算字段基於我們從下層獲得的數據的值等

+0

我希望有人寫評論爲什麼這個答案是投票。 – Maheep

+1

對於兩種模型,您聲明它們用於包含邏輯。這是不正確的。 – CodeCaster

+0

模型可以包含業務邏輯。驗證是業務邏輯 – Kyle

0

域和實體模型'典型'是指與業務對象相似的數據對象;認爲「用戶」或「汽車」或「水果蛋糕」,即。一些你在數據庫中有一張表的東西。這些特定於您的域/業務,其中實體是這些對象的單個實例。

查看模型'典型'是指從上面的這些模型的集合,化妝的信息,你想查看/使用您的網頁/表格/ whatnot。所以,也許你想要一份用戶名單,他們駕車去商店購買水果蛋糕。相關數據的集合成爲在特定「視圖」中處理的單個「模型」。

模型然後成爲上述任何一種非常普通的方式,但更多地模糊它意味着某種類型的數據對象,您需要處理或暴露您想要處理的信息。

0

在ASP.NET MVC中,M代表ViewModel。您可以使用模型來填充視圖,並且您的瀏覽器可以將模型(類似於數據的模型)發佈到View,並返回到Controller。

你用什麼邏輯來填充你的控制器中的ViewModel取決於你。例如,您可以使用Entity Framework及其自己的模型和像AutoMapper這樣的工具來填充ViewModel和數據庫模型的屬性,或者甚至可以使用EF模型作爲ViewModels。

就像說here

「我要建一個MVC應用程序」 在現實[方法]你是把一個MVC表示層到應用程序