【一】CodeFirst+DDD項目結構的構建@Asp.netcore Code First +DDD學習筆記

Asp.netcore如何使用Efcore+mysql來構建CodeFirst,以及如何按照DDD的設計思路來對代碼進行分層。

主題:Asp.netcore Code First +DDD學習筆記

目錄:

   【一】 CodeFirst+DDD項目結構的構建

   【二】Asp.Netcore使用Panda.DynamicWebApi來進行Controller解耦

   【三】Asp.NetCore使用Efcore+Mysql實現CodeFirst

   【四】EfCore實現全自動化遷移

     案例代碼下載點擊

 

首先我們要知道什麼是DDD:

      DDD,英文全稱:Domain-Driven-Design 領域驅動設計,以領域模型爲驅動來進行研發設計和代碼構建等。具體操作過程和含義推薦閱讀《領域驅動設計》(軟件核心複雜性應對之道)這本書。那麼在代碼中我們應該如何設計呢?項目該如何構建呢?在這裏參照ABP框架的DDD來手動搭建一個進行深入學習和理解,本文爲個人的學習筆記,有不對之處請大神給與指點和糾正

在代碼裏面我們首先要把代碼按照DDD的方式進行拆分,參照ABP框架分爲:服務層(Api),邏輯層(Controller),數據傳輸對象(Dto),領域模型層(Domain),數據持久化層(EfCoreRepository)等。

【一】CodeFirst+DDD項目結構的構建

      (1) 先建項目,基於EfCore+mysql的codefrist和asp.netcore api 

           一個 asp.net api項目命名爲Api,四個.netstand 2.0 的類庫命名如下:Controller,Domain,Dto,EfCoreRepository,如圖所示:

                 

  (2)項目之間建立引用

            Api引用Controller,Controller引用Domain和Dto,Domain引用EfCoreRepository,Dto什麼都不引用,EfCoreRepository什麼都不引用。如下圖所示:

  

    (3)組件的介紹:

           a.Panda.DynamicWebApi動態生成Api組件,爲了把Controller從Api項目內解耦出來,如果直接拿出來,你會發現接口消失了,沒有用了,這時候就需要使用該組件來動態生成Api了。

           b.Swagger接口管理組件,可以自動生成接口調試頁面,以及接口描述。爲了更方便的調試接口和管理接口這時候我們需要載入該組件,該組件完美兼容Panda.DynamicWebApi組件,支持動態生成的接口。

           c.AutoMapper 實體映射組件。該組件主要做Entity和Dto之間的相互轉換來使用

           d.Microsoft.EntityFrameworkCore  該組件是efcore的核心組件

           e.Microsoft.EntityFrameworkCore.Design 該組件是efcore的核心組件

           f.Microsoft.EntityFrameworkCore.Tools  該組件是efcore的核心組件

           g.MySql.Data.EntityFrameworkCore  該組件是mysql對支持efcore的核心組件

           h.MySql.Data.EntityFrameworkCore.Design 該組件是mysql對支持efcore的核心組件

   (4)準備一個mysql數據庫

這時候一個Asp.netcore Code First +DDD的框架雛形基本出來了,下一篇將開始進行填充。

github地址:https://github.com/houliren/Asp.netcore-Code-First-DDD

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章