天天看點

使用ASP.NET Web Api建構基于REST風格的服務實戰系列教程【二】——使用Repository模式建構資料庫通路層

前言

在資料通路層應用Repository模式來隔離對領域對象的細節操作是很有意義的。它位于映射層之上作為對于資料進行CRUD操作的一個抽象層。在Repository模式中,我們可以像操作記憶體裡的集合一樣來操作資料,而Repository則負責把我們的操作更新到資料庫中。

建構Repository

在建構Repository模式之前,我們先列舉在我們項目中将要使用到的用例,由于我們項目的重點是Web Api,是以Repository的建構相對比較簡單,并沒有用泛型基類的方式來建構。

查詢所有的科目,通過ID獲得某個科目。

查詢所有的課程以及關聯的對象(導師和科目) 。

根據ID擷取某個課程以及關聯的對象(導師,學科以及參與該課程的學生)

查詢所有的學生以及相關對象(參與的課程,課程所在學科,導師)

根據課程ID查詢所有報讀的學生資訊

通過使用者名查詢學生

通過使用者名和密碼驗證學生資訊

為注冊過的學生提供選課功能

學生和課程的CRUD

建立ILearningRepository接口來定義所有的用例:

上述的接口中已經包含了我們Api中所有需要的操作。特别說明一下在這裡對于集合我們都傳回IQueryable<>類型,因為這個類型能夠做到按需查詢,延遲加載——當我們進行多條件複合檢索或者分頁,排序的時候,IQueryable<>類型不會立即通路資料庫,而是在集合被疊代的時候(在前台foreach展示資料的時候)才去資料庫查詢加載,這樣可以提高通路性能,避免查詢出一些不必要的資料。

現在我們建立“learningrepository”類實作ILearningRepository,在這裡我給出部分實作,剩下的可以在本章最後下載下傳源碼獲得:

總結

到此為止,我們的資料通路層就算基本完成了,Web Api的準備工作也就完了。從下一章開始,本次的主角Web Api就要閃亮登場了。