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
明天會先講Code First。