介紹
分層架構到這裡後,會發現有些地方明明是一樣的功能,卻還要重複編寫,像是CRUD這種功能,在這要說明如何將CRUD的部分抽離出來,使程式簡單化,不用寫重複的功能。
BaseModel
在SQLModel專案的Models資料夾下,新增BaseModel類別,裡面的內容是通常每個表都會使用的欄位,程式如下:
繼承BaseModel
在Project Model裡加入繼承BaseModel,在每次有新增Project的時候也會連BaseModel的內容一起新增,程式如下:
Structure一樣也繼承BaseModel,記得要在下指令Add-Migration,再下Update-Database就新增好BaseModel了。
修改Repository
修改SQLModel專案的IRepository和GenericRepository,程式如下:
IRepository.cs
GenericRepository.cs
BaseService
在Service專案下,新增BaseService,在Nuget下載Microsoft.AspNet.WebApi.Client和Microsoft.AspNet.Identity.Core,Service會使用到這些參考,我們將BaseService利用泛型寫成可以傳入任何的Model,另外在這裡有用到IsNotEmptyOrNull是自己寫的一個StringHelper類別裡的方法,程式如下:
IBaseService.cs
BaseService.cs
StringHelper.cs
修改ProjectService
接著要修改IProjectService和ProjectService,要繼承BaseService並在泛型裡加上使用的Model,繼承以後就不需要在每個Service寫CRUD這些重複的功能,程式如下:
IProjectService.cs
ProjectService.cs
StructureService就跟ProjectService差不多,去做修改就好了。都修改好之後,就可以執行了。到這裡會發現不用在每次新增新的Model後,在新的Service上還要寫CRUD這些功能了,只需要繼承BaseService就可以有這些功能,是不是方便很多!
程式碼已放上Github