參考陽光銘睿的教程:
實體類
在abp中,實體類繼承自
entity
類
publicperson類的父類中有class
person : entity
}
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
publicview codeoverride
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);
}
介面約定
實體類實現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
}
publicview codeoverride
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);}}
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屬性並且都儲存到資...