小白開學Asp.Net Core《二》(補)


小白開學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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM