在上一篇介紹完了如何讓ViewModel和Entity之間的轉換透過AutoMapper變的更簡單,然後透過框架讓設定ViewModel和Entity之間的對應關係變的容易。
在這一篇,將會看Data Access Layer (DAL)的部份,也就是儲存資料層的部份。
同步發表於我的部落格:http://alantsai2007.blogspot.tw/2014/10/BuildYourOwnApplicationFrameworkOnMvc-09-RepositoryPattern.html
Data Acce Layer (DAL)
不管任何大小的軟體,通常都會需要儲存資料。而這個儲存資料最常見的就是儲存到資料庫裡面。以Asp .Net Mvc來說,最常見的就是透過Entity Framework這個ORM的技術來儲存到實體的資料庫,例如MS Sql,Oracle等。
而如果以Entity Framework來講,它所在的角色就屬於DAL層。
以一般比較常見的三層是架構,大概就會如下圖:
一般的三層式架構 - 裡面白色的表示Mvc裡面比和3層式架構較相近的對應
用Entity Framework做DAL的問題
其實這個問題不只有使用Entity Framework會,任何的DAL實作都有這個問題。
舉個例子來說,假設今天我們用的是Entity Framework作為DAL層,如果開發到一半,對方突然要求不要使用Entity Framework,而是要改成傳統的ADO .Net作為DAL怎麼辦?
或者說如果要做單元測試(Unit Testing),肯定不希望在跑的時候還是連資料庫,而是希望連一些假資料,這時候怎麼辦?
解決方法其實很簡單,就是把實際的DAL在抽一層出來,就有了所謂的Repository Pattern。
Repository Pattern
一般來說,在寫Mvc裡面最長看到的Pattern就是Repository Pattern。
這個Pattern概念非常簡單,Repository其實有儲存庫的意思,所以這個Pattern的意思是,把實際的DAL層透過所謂的Repository封裝之後,從外面的角度來說是和Repository 溝通來取得資料,至於Repository的資料來源是那裡,就不管了。
文字敘述可能有些抽象,我們來看一張圖:
Repository的好處:圖片來源: Implementing...