前幾天在公司做 ASP.NET MVC 的教育訓練,因為公司的 .NET 程式設計師大多沒有在既有的專案去導入使用 ADO.NET Entity Framework,所以在講述 ASP.NET MVC 的 Model 時,如果還是以 ADO.NET Entity Framework 為主來說明 Model 這一個部分的話,應該會讓聽的人感到無所適從,因為沒有實際用在專案開發上,就會感到不熟悉,而在 ASP.NET MVC 的學習過程就會有所阻礙,然後去排斥,這就不是我所期待的結果。
ASP.NET MVC 的 Model 並不是只能使用 ADO.NET Entity Framework。
但是很多想學習 ASP.NET MVC 的朋友無論在書裡或是官方網站的教學課程裡,甚至是網路上的教學文章,包括我這個小部落格裡大部分有關 ASP.NET MVC 的文章中,Model 這部份都是採用 ADO.NET Entity Framework,以致於很多人就有個詭異的觀念「ASP.NET MVC 的 Model 就是一定要用 ADO.NET Entity Framework 」,其實 ASP.NET MVC 的 Model 並不等同於 ADO.NET Entity Framework,只是 EF 是微軟官方所主推的 ORM Solution,所以在官方的教學課程裡大部分就只會看到 Model 採用 EF,而 ASP.NET MVC 強調強型別的使用,在 Controller 與 View 裡就能夠感受到強型別的優點,所以大部分有關 ASP.NET MVC 的書籍與文章都比較少去講 Model 使用非 ORM Solution 的內容。
其實 ADO.NET Entity Framework 本身也是架構在 ADO.NET 基礎上,底層還是使用了 ADO.NET,只是說 EF 幫我們做了很多事情,讓我們在寫程式的時候可以使用 LINQ 語法來做資料的存取操作等處理,不需要在去考慮到怎麼下 TSQL 來存取資料以及取資料後要放 DataReader or DataTable or DataSet or else 等等,現在大部分的 ASP.NET 程式設計人員在存取資料還是會使用 DataSet, DataTable 等弱型別的資料集合物件,其實使用這些弱型別資料集合物件並不是很方便,程式裡有很多地方都要去處理資料的型別轉換,但這種資料處理還是以 Database 的 Table 概念來思考的方式,很難將同樣的觀念與作法應用在 ASP.NET MVC 的開發上,然後就時常會聽到很多 ASP.NET WebForm 的開發人員在抱怨 ASP.NET MVC 很難,或是開發 ASP.NET MVC 時會想盡辦法的把以前開發 WebForm 的習慣帶到 MVC 上。
前言講了這麼多無非是要跟大家說開發 ASP.NET MVC 時不要有太多的包袱,如果開發 ASP.NET MVC 不想用 ADO.NET Entity Framework 的話,也是可以使用傳統 ADO.NET 的,ASP.NET MVC 架構對於用來建置 Model 並沒有任何特殊限制。