什麼時候用Model,什麼時候用Entity?

時間 2021-05-30 02:43:50

1樓:Saturdayw

感覺上基於直白的說

model是乙個資料模型,裡面裝的是資料,也就是你檢視前端要用的東西,顯示哪些欄位就可以用model 直接返回檢視。基於檢視顯示字段決定,方便你自己用。

而entity是實體模型,對應的是表和表結構,和資料庫相關的,基於資料庫中的表了。

互相關係又可以互相補充。

2樓:袁文濤

不回答問題,我只是stack overflow搬運工

what is difference between a Model and an Entity

3樓:虛若影

model,entity,dto,viewmodel這些新手比較迷茫到底有什麼區別,

說白了都是乙個類,裡面有些屬性字段。

那怎麼區分他們,我說的簡單點吧,我的理解是這樣的:

model是乙個模型,裡面裝了各種資料,將乙個model傳遞給view,在試圖頁面就可以使用model裡面的資料來呈現到頁面上。

而entity是實體,就是和資料表一一對應的,乙個實體一張表。

官方的demo沒有entity這個說法,他只有model,model就是表,也是傳遞給view的model,就是說他的model即是model又是entity。而我們實際運用需要將model分成ViewModel和Entity,甚至還要加入Dto。

那這個檢視就需要這樣乙個VIewModel:

public class NewsDetailModel //這片新聞的全部資料

而新聞實體entity(新聞表):

public class news

public string Title

public string Content

public int Clicks

public datetime PostTime

現在你應該理解什麼是model,什麼是entity了吧。

然後最新最熱一般我們只需要乙個標題列表,沒必要把內容時間也查詢出來。而我們直接查詢最新最熱的文章直接tolist的話包含了全表的資料,這個時候我們就要用dto,

public class NewsTitleListDto

public string Title

然後上面的model就改成

public class NewsDetailModel //這片新聞的全部資料

然後將資料只查詢id和標題,查詢出來交給lastnews和hotnews就可以了。

其實這個model就是上面提到的viewmodel。viewmodel就是試圖需要的model,說白了就是檢視上需要的資料報。而entity只是資料表字段。

dto是資料傳輸物件,根據業務需要哪些資料就放哪些資料。

反正需要你慢慢理解,一步一步的深入。

4樓:

微軟裡面很多的東西都是實現了Martin Fowler的企業架構模式和DDD(領域驅動設計)裡面的一些概念。按照DDD的方式來理解的話:

* MVC裡面的M是屬於View Model以及Input Model, 其中View Model是你扔到Razor裡面的那個東西。Input Model是你Action引數裡面得到的那些通過model binding的來的東西。

* Entity Framework裡面的entity是指DDD那些人說的entity。DDD中的entity是指乙個aggregate裡面的三種常見物件(aggregate root, entity, value object, 其中aggregate root是一種特殊的entity,因為是root)。

DDD簡單說是: 乙個專案裡面有多個Bounded Context, 譬如說乙個是前台面向使用者的,乙個是後台面向公司內部人員的。每個Bounded Context裡面會分為多個aggregate。

每個aggregate裡面包含了一堆需要保證事務性一致的物體,也就是說從全域性來說,每個aggregate都是當作乙個整體。常見的例子就是Order(訂單)和OrderLine(訂單裡面的商品)。Entity包括Aggregate root都有唯一標識。

兩者的區別是aggregate root全域性裡面有唯一標識,而aggregate 內部其他entity只是在aggregate內部有唯一標識(也許你資料庫裡面有主鍵,但是這邊是指概念上來說這個唯一標識對全域性來說意義不大,只有在aggregate內部意義才大)。另外的value object就是沒有標識的物體,他們的意義就在於它的值,你可以想象成比較兩個entity是不是同乙個只需要判斷ID是否相等,而判斷value objects需要看裡面的每個屬性是否一樣。

5樓:陳肖恩

MVC的M是資料模型,是基於應用層的資訊傳遞包,主要是將C處理的結果傳送到V時的資料打包起來(其中可能還包括對V的控制等資料)。

Entity是和資料來源之間的資料模型,是基於資料層的資料報,就是將資料來源的資訊結構化成各類物件供C使用。

從完整度來說,M是處理過後給V顯示處理用的,Entity就是乙個個資料化的事物。兩者基本不重合吧。

6樓:蔣晟

MVC是模式,EF是ORM,角色不同。MVC裡面的Model是C發給V的。這些Model應該被高度優化,僅僅被對應的View用來顯示,額外的資料應該被Model層砍掉以節省磁碟訪問、記憶體占用或者資料庫頻寬。

通常情況下,View的數量都會比你資料庫的Entity要多,比如使用者要求的各種各樣的報表,所以對應的Model也應該比資料訪問層的Entity多。

用編寫資源管理器介面打個比方。在不同的顯示模式下。這裡的Model可以是WIN32_FIND_DATA這樣的常用檔案屬性。

也可以是常用檔案屬性加上IShellItemImageFactory返回的縮圖。

假設你的View和你的EF的實體類完全一一對應,可以不編寫額外的Model。但是隨著需求的增多,很難一直使用EF的實體類來做Model。

7樓:趙劼

一般這種稱謂都是根據上下文來的,例如Model是因為有MVC,或MVVM的場景下所以叫做Model,這裡的Model就是一種職責。Entity則更接近是一種表達業務概念的實體,例如乙個User,乙個Order等等,而這樣的實體在MVC中起到Model的職責。EF的作用是幫助你訪問Entity的,而不關心你把這個Entity用作MVC裡的Model還是Observer模式中的Subject物件。

當然以上都是我常用的理解方式,不同的專案內部完全可以有不同的理解方式,只要專案內部統一,不會引起混淆即可。命名一直是件很難的事情,實際中絕大部分專案都是要權衡的,也都是有各種不完美的地方的。例如,.

NET類庫中各種ObservableCollection,ReadOnlyCollection,按照「規範」都應該叫做ObservableList,ReadOnlyList,而Collection這是個更寬泛的概念。

我們可以花一部分精力去考慮這方面問題,但也不用糾結太多,頭大且對專案也沒太大幫助。

matlab中什麼時候用 什麼時候用

半個馮博士 這乙個回答裡面寫得很清楚了 matlab中,對於乙個表示式,兩個字母相乘到底什麼時候加 最主要就是這幾種情況 a.ba.b a.ba b 反除,右除以左 對應原理 詳細的解釋看原回答就可以了。 無知 視情況和需求而定 舉例來說,有變數a,b a為標量,b為矩陣,是沒有區別的 若a,b為方...

什麼時候用從句

奧風英語 在我們學習的初級階段多以單詞或短語充當句子成分,作主語,賓語,表語等。有了一定的基礎後就會發現能充當句子成分的,除了單詞和短語,還有句子。當乙個句子用來充當句子成分的時候,這個句子就叫從句。一般簡單的內容用單詞和短語就可以表達了,當我們要表達的內容比較比較豐富或複雜時,往往就需要用到從句了...

鋼筋代換什麼時候用等強度什麼時候用等面積?

聖權 鋼筋代換原則 在施工過程中經常遇有鋼筋的品種或規格與設計要求不一致,此時應向設計單位提出申請,進行鋼筋代換。設計人員可按如下原則代換 1 等強度代換 當構件受強度控制時,鋼筋可按強度相等原則進行代換,代換後的鋼筋強度應大於或等於代換前的鋼筋強度。2 等面積代換 當構件按最小配筋率配筋時,鋼筋可...