小白開學Asp.Net Core《二》(補)
——數據倉儲層(Repositroy)、服務層(Service)
---------------------------------------------------------------------------------------------------------
我胡漢三又回來了(距離上篇時間有點長),今天抽時間將最近對項目的優化寫下說明。
1、Why
讀了上篇文章的朋友們都知道我在項目中(Repository 層)引入了兩個常用的ORM,因此分別寫了各自的接口(只能說太幼稚),現將他們整合起來。
2、Do
A)、現將Repository調整如下:
(圖一)
他們之間的關系圖如下:
說明:
a)、IBaseRepository接口中定義了對數據庫操作的常用操作,IDapperRepository是基於Dapper 的接口定義,ISqlSugarRepository 是基於SqlSugar的接口定義。
b)、GenericDapperRepositroyBase是對IDapperRepository的實現,GenericSqlSugarRepositoryBase是對ISqlSugarRepository的實現
具體代碼就不貼了直接到 GitHub上 去看看,這里只是說下思路。
說明了他們的關系后,再說下 圖一 中的 RepositroyBase 類
a)、先看代碼
1 using Aju.Carefree.Repositories.Dapper; 2 using Aju.Carefree.Repositories.SqlSugar; 3 namespace Aju.Carefree.Repositories 4 { 5 public abstract class RepositroyBase<T, TKey> : GenericSqlSugarRepositoryBase<T, TKey> where T : class, new() 6 { 7 public RepositroyBase(string connName) : base(connName) 8 { 9 } 10 } 11 12 //public abstract class RepositroyBase<T, TKey> : GenericDapperRepositroyBase<T, TKey> where T : class, new() 13 //{ 14 // public RepositroyBase(string connName) : base(connName) 15 // { 16 // } 17 //} 18 }
b)、代碼貼出來后,肯定都知道我要干啥了。其實這個類起到的作用就是我可以在不動Server層與Repostiroy層代碼時,切換ORM(愛用那個就用那個,兩個都不喜歡用了可以沿用上面的思路自己擴展個)。
B)、Service 層
和上面一樣先上圖
(圖二)
相比較Repository層,Service層就簡單多了,說白了我對該層理解就是 寫 業務邏輯 的 。
a)、那么我們來看看IService接口
1 using Aju.Carefree.Common; 2 3 namespace Aju.Carefree.IServices 4 { 5 public interface IService<T, TKey> : IDependency where T : class, new() 6 { 7 8 } 9 }
就是這么簡單,這么簡單為何要寫呢?答案其實就是為了實現 IOC,其中IDependency 其實就是為了Autofac做的
剩下的就是寫業務邏輯了!!!這里就不在寫了。其中在Server實現中要注意的一點就是 如下圖所標紅的地方
好了,今天就到這里。下編再見。
C)、總結
總結一句話,這篇文章是對上篇文章的補充,也是徹底的放棄了以前的思路。
歡迎大家提意見和建議,共同學習!
--------------------------------------------------------------------------------------------------------------
(本人堅信:學習是由淺到深的過程,先打基礎)
不喜勿噴!謝謝!
GitHub地址: https://github.com/AjuPrince/Aju.Carefree