国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

解析ABP框架領域?qū)又械膶嶓w類與倉儲類

2024-07-10 12:47:09
字體:
供稿:網(wǎng)友

領域?qū)?br />實體是DDD(領域驅(qū)動設計)的核心概念之一。Eric Evans是這樣描述的“很多對象不是通過它們的屬性定義的,而是通過一連串的連續(xù)性事件和標識定義的”(引用領域驅(qū)動設計一書)。

譯者注:對象不是通過它們的屬性來下根本性的定義,而應該是通過它的線性連續(xù)性和標識性定義的。。所以,實體是具有唯一標識的ID且存儲在數(shù)據(jù)庫中。實體通常被映射成數(shù)據(jù)庫中的一個表。

實體類(Entity classes)
在ABP中,實體繼承自Entity類,請看下面示例:

public class Person : Entity{  public virtual string Name { get; set; }  public virtual DateTime CreationTime { get; set; }  public Task()  {    CreationTime = DateTime.Now;  }}

Person 類被定義為一個實體。它具有兩個屬性,它的父類中有Id屬性。Id是該實體的主鍵。所以,Id是所有繼承自Entity類的實體的主鍵(所有實體的主鍵都是Id字段)。

Id(主鍵)數(shù)據(jù)類型可以被更改。默認是int(int32)類型。如果你想給Id定義其它類型,你應該像下面示例一樣來聲明Id的類型。

public class Person : Entity<long>{  public virtual string Name { get; set; }  public virtual DateTime CreationTime { get; set; }  public Task()  {    CreationTime = DateTime.Now;  }}

你可以設置為string,Guid或者其它數(shù)據(jù)類型。

實體類重寫了 equality (==) 操作符用來判斷兩個實體對象是否相等(兩個實體的Id是否相等)。還定義了一個IsTransient()方法來檢測實體是否有Id屬性。

接口約定
在很多應用程序中,很多實體具有像CreationTime的屬性(數(shù)據(jù)庫表也有該字段)用來指示該實體是什么時候被創(chuàng)建的。APB提供了一些有用的接口來實現(xiàn)這些類似的功能。也就是說,為這些實現(xiàn)了這些接口的實體,提供了一個通用的編碼方式(通俗的說只要實現(xiàn)指定的接口就能實現(xiàn)指定的功能)。

(1)審計(Auditing)

實體類實現(xiàn) IHasCreationTime 接口就可以具有CreationTime的屬性。當該實體被插入到數(shù)據(jù)庫時, ABP會自動設置該屬性的值為當前時間。

public interface IHasCreationTime{  DateTime CreationTime { get; set; }}

Person類可以被重寫像下面示例一樣實現(xiàn)IHasCreationTime 接口:

public class Person : Entity<long>, IHasCreationTime{  public virtual string Name { get; set; }  public virtual DateTime CreationTime { get; set; }  public Task()  {    CreationTime = DateTime.Now;  }}

ICreationAudited 擴展自 IHasCreationTime 并且該接口具有屬性 CreatorUserId :

public interface ICreationAudited : IHasCreationTime{  long? CreatorUserId { get; set; }}

當保存一個新的實體時,ABP會自動設置CreatorUserId 的屬性值為當前用戶的Id

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东山县| 石景山区| 白朗县| 罗甸县| 英山县| 广元市| 平泉县| 巨鹿县| 太仓市| 漯河市| 江源县| 高邮市| 高阳县| 井冈山市| 三穗县| 加查县| 黑水县| 双峰县| 丰台区| 格尔木市| 鄯善县| 韶关市| 安徽省| 平安县| 嘉兴市| 嵊泗县| 文山县| 长阳| 凯里市| 琼结县| 禹城市| 霍邱县| 黄冈市| 锡林郭勒盟| 陕西省| 福安市| 延津县| 宁陕县| 西和县| 牡丹江市| 宿松县|