小白開學Asp.Net Core《二》(補)git
——數據倉儲層(Repositroy)、服務層(Service)github
---------------------------------------------------------------------------------------------------------數據庫
我胡漢三又回來了(距離上篇時間有點長),今天抽時間將最近對項目的優化寫下說明。app
一、Whypost
讀了上篇文章的朋友們都知道我在項目中(Repository 層)引入了兩個經常使用的ORM,所以分別寫了各自的接口(只能說太幼稚),現將他們整合起來。 學習
二、Do優化
A)、現將Repository調整以下:spa
(圖一)3d
他們之間的關係圖以下:code
說明:
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)、總結
總結一句話,這篇文章是對上篇文章的補充,也是完全的放棄了之前的思路。
歡迎你們提意見和建議,共同窗習!
--------------------------------------------------------------------------------------------------------------
(本人堅信:學習是由淺到深的過程,先打基礎)
不喜勿噴!謝謝!