ABP領域層 實體

2022-09-12 08:36:14 字數 2871 閱讀 8573

參考陽光銘睿的教程:

實體類

在abp中,實體類繼承自

entity

public

class

person : entity

}

person類的父類中有

id屬性,

id是該實體的主鍵,預設型別是

int,

如果想給id定義其他型別,如下,也可以設定為

string,guid

public

class person : entity

}

實體類重寫了==操作符,還定義了乙個

istransient()

方法來檢測實體是否有id屬性

person.person p1 = new person.person ;

person.person p2 = new person.person ;

bool flag = p1 == p2;//

true

部分原始碼

public

override

bool equals(object

obj)

//same instances must be considered as equal

if (referenceequals(this

, obj))

//transient objects are not considered as equal

var other = (entity)obj;

if (istransient() &&other.istransient())

//must h**e a is-a relation of types or must be same type

var typeofthis =gettype();

var typeofother =other.gettype();

if (!typeofthis.isassignablefrom(typeofother) && !typeofother.isassignablefrom(typeofthis))

if (this

is imayh**etenant && other is imayh**etenant &&

this.as().tenantid != other.as().tenantid)

if (this

is imusth**etenant && other is imusth**etenant &&

this.as().tenantid != other.as().tenantid)

return

id.equals(other.id);

}

view code

介面約定

實體類實現ihascreationtime介面就可以具有creationtime屬性,插入

資料庫時自動設定為當前時。

icreationaudited 擴充套件自 ihascreationtime 並且該介面具有屬性creatoruserid,當儲存乙個新的實體時,

abp會自動設

creatoruserid

的屬性值為當前使用者的id。可以直接派生自實體類creationauditedentity。

更新實現介面imodificationaudited 。實現新增和更新屬性,擴充套件iaudited介面,或直接派生自auditedentity 。       

軟刪除實現該介面isoftdelete ,記錄誰刪了這個實體,實現介面ideletionaudited 。

擴充套件所有審計介面,實現ifullaudited ,或直接派生自fullauditedentity

public

class

person : entity, ifullaudited

public

long? creatoruserid

public datetime? deletiontime

public

long? deleteruserid

public

bool isdeleted

public datetime? lastmodificationtime

public

long? lastmodifieruserid

}

部分原始碼

public

override

ints**echanges()

catch

(dbentityvalidationexception ex)

}protected

virtual

void

else

break

;

case

entitystate.deleted:

canceldeletionforsoftdelete(entry);

setdeletionauditproperties(entry.entity, userid);

entitychangeeventhelper.triggerentitydeletingevent(entry.entity);

entitychangeeventhelper.triggerentitydeletedeventonuowcompleted(entry.entity);

break

; }

triggerdomainevents(entry.entity);}}

view code

2 abp 領域層建立實體

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

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

abp入門系列目錄 學習abp框架之實操演練 這一節我們主要和領域層打交道。首先我們要對abp的體系結構以及從模板建立的解決方案進行一一對應。網上有 生成器去簡化我們這一步的任務,但是不建議初學者去使用。領域層就是業務層,是乙個專案的核心,所有業務規則都應該在領域層實現。實體 entity 實體代表...

jpadao層繼承什麼 ABP框架領域層

領域層 實體 倉儲 領域服務 工作單元 下期 領域事件 事件匯流排 下期 實體是ddd 領域驅動設計 的核心概念之一。eirc evans是這樣描述的實體的 它根本上不是通過屬性定義的,而是通過一系列連續性 continuity 和標識 identity 定義的 因此,實體都有id屬性並且都儲存到資...