ABP入門系列(2) 領域層建立實體

2022-01-10 00:54:21 字數 2392 閱讀 3155

abp入門系列目錄——學習abp框架之實操演練

這一節我們主要和領域層打交道。首先我們要對abp的體系結構以及從模板建立的解決方案進行一一對應。網上有**生成器去簡化我們這一步的任務,但是不建議初學者去使用。

領域層就是業務層,是乙個專案的核心,所有業務規則都應該在領域層實現。

實體(entity): 實體代表業務領域的資料和操作,在實踐中,通過用來對映成資料庫表。

倉儲(repository): 倉儲用來運算元據庫進行資料訪問。倉儲介面在領域層定義,而倉儲的實現類應該寫在基礎設施層。

領域服務(domain service): 當處理的業務規則跨越兩個(及以上)實體時,應該寫在領域服務方法裡面。

領域事件(domain event): 在領域層有些特定情況發生時可以觸發領域事件,並且在相應地方捕獲並處理它們。

工作單元(unit of work): 工作單元是一種設計模式,用於維護乙個由已經被修改(如增加、刪除和更新等)的業務物件組成的列表。它負責協調這些業務物件的持久化工作及併發問題。

確定了解決方案下每個專案分別對應那一層後,我們開始建立task實體。

1.在領域層建立tasks資料夾,並建立task實體類;

2.abp中所有的實體類都繼承自entity,而entity實現了ientity介面;而ientity介面是乙個泛型介面,通過泛型指定主鍵id型別,預設的entity的主鍵型別是int型別。

建立task,肯定需要儲存建立時間,可以通過實現審計模組中的ihascreationtime來實現這種通用功能。**如下:

namespace learningmpaabp.tasks

[foreignkey("assignedpersonid")]

public user assignedperson

[required]

[maxlength(maxtitlelength)]

public string title

[required]

[maxlength(maxdescriptionlength)]

public string description

public taskstate state

public datetime creationtime

public task()

public task(string title, string description = null) : this()

}public enum taskstate : byte

}

其中定義了taskstate狀態列舉。並新增了assignedperson導航屬性,用來儲存分配任務到某個使用者。其中[required]、[maxlength]特性是用來進行輸入校驗的。

3.定義好實體之後,我們就要去dbcontext中定義實體對應的dbset,以應用code first 資料遷移。找到我們的基礎服務層,即以entityframework結尾的專案中,找到dbcontext類,新增以下**

//todo: define an idbset for your entities...

public idbsettasks

4.執行code first資料遷移。

namespace learningmpaabp.migrations.seeddata

static defaulttestdatafortask();}

public void create()}}

}

然後在configuration類中的seed方法中,新增以下**。

new defaulttestdatafortask(context).create();
至此,task實體類成功建立。

原始碼已上傳至github-learningmpaabp,可自行參考。

2 abp 領域層建立實體

領域層 learningmpaabp.core專案 基礎服務層 entityframework對應的專案 1 在領域層新建tasks資料夾 在資料夾下新建task類 但是注意 task類必須要繼承entity類,entity類又實現了ientity介面 和 ientity介面 其中 ientity裡...

ABP領域層 實體

參考陽光銘睿的教程 實體類 在abp中,實體類繼承自 entity 類public class person entity person類的父類中有 id屬性,id是該實體的主鍵,預設型別是 int,如果想給id定義其他型別,如下,也可以設定為 string,guid public class pe...

ABP入門系列(18) 使用領域服務

abp入門系列目錄 學習abp框架之實操演練原始碼路徑 github learningmpaabp 自上次更新有乙個多月了,發現越往下寫,越不知如何去寫。特別是當遇到ddd中一些概念術語的時候,尤其迷惑。如果只是簡單的去介紹如何去使用abp,我只需參照官方文件,實現到任務清單demo中去就可以了,不...