日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABP官方文档翻译 3.1 实体

發布時間:2025/5/22 编程问答 108 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABP官方文档翻译 3.1 实体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實體

  • 實體類
  • 聚合根類
    • 領域事件
  • 常規接口
    • 審計
    • 軟刪除
    • 激活/失活實體
  • 實體改變事件
  • IEntity接口

  實體是DDD(領域驅動設計)的核心概念之一。Eric Evans描述它為"An object that is not fundamentally defined by its attributes, but rather by a thread of continuity and identity."所以,實體有Id并存儲在數據庫。實體一般映射到關系庫中的表。

實體類

  在ABP,實體繼承自Entity類。如下示例:

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

  Persion類定義為實體。它有兩個屬性,實體類還定義了Id屬性,它是實體的主鍵。所以,所有實體主鍵的名字都一樣,為Id。

  Id(主鍵)的類型可以改變,默認為int(Int32)類型。如果想定義其他類型作為Id,可以按如下所示顯示的聲明:

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

  還可以將主鍵類型設置為String、Guid或其他類型。

  實體類重寫了相等運算符(==),可以方便的檢查兩個實體是否相等(Id相同)。實體還定義了IsTransient()方法檢查是否有Id。

聚合根類

  “在DDD中,聚合是一種模式。一個DDD聚合是領域對象群集,這些領域對象可以作為一個單元對待。例如訂單和它的行項目,這些是獨立的對象,但是把訂單(和它的行項目)作為一個聚合對待是有用的。”(Martin Fowler -參見詳細描述)。

  雖然ABP不強制使用聚合,在應用中,我們或許想創建聚合和聚合根。ABP定義了AggregateRoot類,它擴展了實體為聚合創建聚合根實體。

領域事件

  聚合根定義了領域事件集合,通過聚合根類產生領域事件。這些事件在當前工作單元完成之前自動觸發。實際上,任何實體可以通過實現IGeneratesDomainEvents接口來生成領域事件,但是,通常在(最佳實踐)聚合根中生成領域事件。這就是為什么默認為聚合根而不是其他實體類。

常規接口

  在許多應用中,相似的實體屬性(和數據庫表字段)被使用,如CreationTime表示實體什么事件被創建。ABP提供了一些有用的接口使這些常見屬性顯示聲明。這也提供了編寫實體常用代碼的一種方式,實現這些接口。

審計

  IHasCreationTime使實體擁有一個常用的"creation time"屬性。當實現了這個接口的實體被插入到數據庫時,ABP自動設置CreationTime為當前時間。

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

  ABP自動設置CreatorUserId為當前用戶Id,當保存一個新實體的時候。也可以通過將實體繼承CreationAuditedEntity類來實現ICreationAudited接口。它也有一個泛型版本,可以實現不同類型的Id屬性。

  修改也有類似的接口:

public interface IHasModificationTime {DateTime? LastModificationTime { get; set; } }public interface IModificationAudited : IHasModificationTime {long? LastModifierUserId { get; set; } }

  當更新實體時,ABP自動設置這些屬性。只需要在實體中定義他們。

  如果想實現所有的審計屬性,可以直接實現IAudited接口:

public interface IAudited : ICreationAudited, IModificationAudited {}

  有一個捷徑,可以直接繼承AuditedEntity類而不是直接實現IAudited接口。AuditedEntity類也有一個泛型版本,以適應不同類型的Id屬性。

  注意:ABP從ABP會話中獲取當前用戶Id。

軟刪除

  軟刪除是常用的模式,用來標記實體刪除而不是真的從數據庫中刪除。例如,可能不想從數據庫中硬刪除一個用戶,因為它和其他表有許多關系。ISoftDelete接口用來實現這個目的:

public interface ISoftDelete {bool IsDeleted { get; set; } }

  ABP實現了開箱即用的軟刪除模式。當軟刪除實體被刪除時,ABP會檢測到并阻止刪除,設置IsDeleted為true,然后更新實體到數據庫。ABP不會從數據庫中獲取(select)軟刪除的實體,自動過濾他們。

  如果使用軟刪除,也想記錄實體什么時候被刪除、誰刪除,可以實現IDeletionAudited接口,如下所示:

public interface IDeletionAudited : ISoftDelete {long? DeleterUserId { get; set; }DateTime? DeletionTime { get; set; } }

  IDeletionAudited擴展了ISoftDelete接口。當實體被刪除時,ABP自動記錄這些屬性。

  如果想讓實體實現所有的審計接口(creation、modification和deletion),可以直接實現IFullAudited接口,因為它繼承自所有接口:

public interface IFullAudited : IAudited, IDeletionAudited {}

  有個捷徑,可以使實體繼承自FullAuditedEntity類,它實現了所有。

  • NOTE1:所有的審計接口和類都有一個泛型版本,用來定義User實體(如ICreationAudited<TUser>和FullAuditedEntity<TPrimaryKey,TUser>)的導航屬性。
  • NOTE2:所有這些都有一個聚合根版本,如AuditedAggregateRoot。

激活/失活實體

  一些實體需要被記錄為激活或失活。然后可以基于實體的激活/失活狀態進行操作。可以實現IPassiveable接口,這個接口便是為這個目的設計的。它定義了IsActive屬性。

  如果實體第一次創建時為激活狀態,那么可以在構造函數中設置IsActive為true。

  這和軟刪除(IsDeleted)是不同的。如果實體被軟刪除,它不能從數據庫中獲取(ABP默認會阻止獲取),但是,對于激活/失活的實體,控制獲取實體完全由自己決定。

實體改變事件

  當實體被插入、更新或刪除時,ABP自動觸發這些確定的事件。然后,我們可以注冊這些事件,執行需要的任何邏輯。參見在事件總線文檔的預定義事件部分了解更多信息。

IEntity接口

  實際上,Entity類實現了IEntity接口(Entity<TPrimaryKey>實現了IEntity<TPrimaryKey>)。如果不想從Entity類集成,可以直接實現這些接口。其他實體類也有相關的接口。但是,不建議使用這種方式,除非有好的理由不從Entity類繼承。

?

返回主目錄

轉載于:https://www.cnblogs.com/xajh/p/6814894.html

總結

以上是生活随笔為你收集整理的ABP官方文档翻译 3.1 实体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品无码一区 | 久久99国产精品一区 | www.超碰在线观看 | 性生交生活影碟片 | 成人做受黄大片 | 原创露脸88av | 91丨九色丨蝌蚪丨丝袜 | 毛片基地站 | 久久免费国产 | 一眉道姑 电影 | 色妞ww精品视频7777 | 日韩伦理中文字幕 | 日本免费在线观看视频 | 三级精品在线观看 | 97精品自拍 | 操比网站| 亚洲激情图 | 成年人香蕉视频 | 国产黄网站 | 中文字幕一区二区三区门四区五区 | 裸体按摩www性xxxcom | 久久成人国产精品 | 日韩黄色片网站 | 成年人免费在线视频 | 亚洲国产精品网站 | 五月天婷婷激情网 | 欧美成人自拍 | 象人高潮调教丨vk | 91se在线 | 国产激情福利 | 久久成人在线视频 | 精品一区在线视频 | 黄色永久免费网站 | 国产乱仑视频 | 国产精品久久久久久久久免费软件 | 久久这里精品 | 日本免费一区二区三区四区 | 一本色道久久88亚洲精品综合 | 岛国av噜噜噜久久久狠狠av | 国模一区二区三区 | 91精品视频免费在线观看 | 国产精品videossex久久发布 | 青青在线视频 | 色噜噜综合| 欧美日韩在线不卡 | 久久久久久国产精品免费播放 | 亚洲男人av | 中文字幕人乱码中文字 | 成年人的视频网站 | 国产调教视频 | 日韩一区二区毛片 | 欧美hdse| 九九九免费 | 欧美一区二区三区四区五区 | 秋霞自拍 | 亚洲成人第一页 | 最新色视频 | 女女互磨互喷水高潮les呻吟 | 高级家教课程在线观看 | 欧美在线色 | 久久久精品小视频 | 色av一区二区三区 | 中文字幕人成人乱码亚洲电影 | 中文字幕一区二区三区四区欧美 | 素人一区 | 国产噜噜噜| 久久精品国产亚洲av久一一区 | 国产美女一级片 | 中文字幕第一区综合 | 少妇又色又爽又黄的视频 | 男女交性视频 | 成人av中文解说水果派 | 91噜噜噜 | 亚洲成人av中文字幕 | 午夜伦理影院 | 午夜久久久久久久久久 | 国产日韩av一区二区 | 日本一区二区在线不卡 | 成人av在线资源 | 午夜免费影院 | 中文字字幕在线观看 | 久久久久久久久久国产 | 夜夜操国产 | 性色av一区二区三区红粉影视 | 激情丁香六月 | 色婷婷电影网 | 日韩区一区二 | 国产精品毛片久久久久久久 | 婷婷亚洲综合五月天小说 | 又紧又大又爽精品一区二区 | 国产精品成人3p一区二区三区 | www久久com | 男人操女人逼逼视频 | 国产亚洲精品成人无码精品网站 | 国产亚洲精久久久久久无码77777 | 少妇一级淫片免费播放 | 久久国产露脸精品国产 | 男生坤坤放进女生坤坤里 | 向日葵视频在线播放 |