日韩性视频-久久久蜜桃-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 实体的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 摸摸摸bbb毛毛毛片 午夜爽爽影院 | 四虎婷婷 | av一级黄色片 | 草色网| 六月丁香婷婷网 | 国产清纯在线 | 伊人96 | 欧美性xxxxx极品娇小 | 亚洲色偷偷综合亚洲av伊人 | 成人无码av片在线观看 | 秋霞影院午夜丰满少妇在线视频 | 草草福利视频 | 水蜜桃久久 | 又大又粗弄得我出好多水 | 激情欧美日韩 | 亚洲成a人 | 亚洲小说春色综合另类 | 亚洲视频久久 | 污污的视频软件 | 啪视频免费 | 亚洲成人网av | 国产精品久久久久久av | 成人av入口| 精品视频一二 | 久久精品夜色噜噜亚洲a∨ 中文字幕av网 | 激情久久av| 欧美日韩免费做爰视频 | 日本国产在线观看 | 成人久色 | 国产片高清在线观看 | 日韩欧美黄色 | 久久久免费网站 | 欧美10p| xxx久久| 韩国一二三区 | 97成人人妻一区二区三区 | 麻豆 美女 丝袜 人妻 中文 | 91丨九色丨海角社区 | 成人a√ | 亚洲不卡在线视频 | 98精品国产 | 久久人人爽| 欧美性生活网址 | 亚洲男人天堂2024 | 国产精品理论片 | 日本电影成人 | 成人软件在线观看 | 四虎黄色影视 | 色中文网| 色婷婷狠 | 日本一区二区不卡在线观看 | 青青av| 国产三级一区 | 免费在线观看成人 | 午夜精品一区二区在线观看 | 国产乱人乱偷精品视频a人人澡 | 在线看欧美 | 影音先锋亚洲成aⅴ人在 | 一级女性全黄久久生活片免费 | 在线免费看黄av | 一二三区中文字幕 | 日韩电影一区二区在线观看 | 日日麻批免费视频播放 | 成人特级片 | 日批免费网站 | 强制憋尿play黄文尿奴 | 高跟鞋调教—视频|vk | 日韩激情| 日韩高清在线播放 | 极品销魂美女一区二区三区 | 亚洲精品在线中文字幕 | 青青青在线视频免费观看 | 中文字幕第四页 | 亚洲av无码精品色午夜 | 欧美肥老妇视频 | 国产女人爽到高潮a毛片 | 欧美精品一级在线观看 | 2018狠狠干 | 成人看片在线观看 | 熟妇人妻中文字幕 | 中文字幕丰满人伦在线 | 久草热在线 | ,午夜性刺激免费看视频 | 亚洲最大成人在线视频 | 2017天天干 | 欧美大片黄 | 韩国bj大尺度vip福利网站 | 乱码一区二区三区 | 黄色网址在线视频 | 国产成人无码精品久久二区三 | 亚洲一区二区三区加勒比 | 一区二区三区四区av | 顶级嫩模啪啪呻吟不断好爽 | 女人久久 | 国产一二三区精品 | 精品福利三区3d卡通动漫 | 欧美福利一区二区三区 | 麻豆69 | 男人和女人在床的app |