在錯誤中學習ASP.NET MVC 第 20 篇 - 認識Model - 淺談Entity Framework

 Model就是資料模型,專案中的資料來源大多都是透過Model來取得,因為我本身對資料庫非常非常的弱,所以起初就Model這一塊最無法理解,所幸第一個MVC專案我完全不需要參與Model這塊,不過第二個專案就非得面對了XD,在學習自己寫Model時,我還跟同事說Model也太難寫了吧,真是辛苦上一個專案負責寫Model的主管了,因為先天學習不良所以就勉強的亂寫出一堆可以動的code,現在回想起來真的覺得那些code很恐怖,好險我已經離職了XD

一開始聽到"模型"會覺得有點抽象,可以把Model想成是資料存放的地方,過去使用php讀取資料庫時必須非常清楚資料表的設計,才有辦法寫出SQL,自己去CREATE或UPDATE資料表;而MVC的Model其實就是在改善這些行為,透過ORM的技術,將資料來源Mapping成強型別物件,所以工程師只要了解物件就能寫程式,不太需要知道DB那塊是如何設計的。簡單的ORM類似這樣,大家可能有寫過類似下面的Code,就是把資料轉成物件來使用,透過ORM就可以將DB與程式開發分成兩大塊,就能專業的分工,各別去處理自己關心的事情。

public List<Customer> GetCustomers(){
   List<Customer>  list = new List<Customer>();
   foreach(var data in Records){
        Customer customer = new Customer ();
        customer .Id=data.Id;
        customer .Name=data.Name;
        list.Add(customer);
   }
   return list;
}

而Model在MVC裡面算是非常吃重的部分,包含資料庫的連線、資料的定義、資料的讀取、新增、刪除與修改(CURD),並且還要負責資料驗證,跟Contorller只需要負責流程的控制,還有View只需要負責顯示資料有很大的不同。

接下來的幾篇會使用Entity Framework來說明Model的操作,雖然我的第一個專案貌似是使用NHibernate,但我根本沒參與Model那塊所以無從分享XD,而第二個專案是使用Entity Framework,所以有比較多的學習經驗。

Entity Framework以 ADO.NET 為基礎ORM架構

http://msdn.microsoft.com/en-us/data/aa937709.aspx

使用Entity Framework的開發方式有三種:Code First、 Model First與Database First

  1. Database First:由資料庫產生模型,如果有DBA的角色存在,那就是DBA怎麼規劃資料庫,你就乖乖照著用
  2. Model First:透過Entity Framework的工具設計模型後再建立資料庫
  3. Code First:使用程式碼定義模型後再建立資料庫

明天會先講Code First。

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明